2016-07-08 5 views
0

ich ein dict wie dieses: Schlüssel ein String ist, ist Wert eine Liste von StringsWie sortiere ich ein Diktat nach einem seiner Werte in Python?

my_dict = { 
    'key1': [value11, value12, value13], 
    'key2': [value21, value22, value23], 
    'key3': [value31, value32, value33], 
    'key4': [value41, value42, value43] 
} 

z.B.

dict_0 = { 
'key1' : [lv, 2, abc], 
'key2' : [ab, 4, abc], 
'key3' : [xj, 1, abc], 
'key4' : [om, 3, abc], 
} 

wollte ich basierend auf dem zweiten Wert in der Werteliste sortiert werden, so sollte es so aussehen:

dict_0 = { 
'key3' : [xj, 1, abc], 
'key1' : [lv, 2, abc], 
'key4' : [om, 3, abc], 
'key2' : [ab, 4, abc], 
} 

ich diesen dict von einem Wert sortiert werden soll in der Werteliste, also Wert * 2, wie kann ich das machen? Ich habe ausführlich auf der Website gesucht, aber keinen ähnlichen Fall gefunden.

Danke.

+0

Wörterbücher sind ungeordnet. –

+0

Sie können ein Wörterbuch nicht sortieren. Ein Wörterbuch verfügt über auswechselbare Schlüssel, die Zugriff auf seine Werte ermöglichen. Es gibt etwas namens und OrderedDict, das Sie sich anschauen können –

+0

Sie können nicht. Http://stackoverflow.com/questions/613183/sort-a-python-dictionary-by-value für eine mögliche Lösung, oder verwenden Sie ein Ordered Dictionary –

Antwort

6

Wörterbücher sind keine geordneten Datenstrukturen, wenn Sie eine sortierte verwenden möchten, können Sie OrderedDict() Funktion von collections Modul verwenden.

>>> dict_0 = { 
... 'key1' : ['lv', 2, 'abc'], 
... 'key2' : ['ab', 4, 'abc'], 
... 'key3' : ['xj', 1, 'abc'], 
... 'key4' : ['om', 3, 'abc'], 
... } 

>>> from collections import OrderedDict 
>>> OrderedDict(sorted(dict_0.items(), key=lambda x: x[1][1])) 
OrderedDict([('key3', ['xj', 1, 'abc']), 
      ('key1', ['lv', 2, 'abc']), 
      ('key4', ['om', 3, 'abc']), 
      ('key2', ['ab', 4, 'abc'])]) 
>>> 
+0

Schön mein Problem gelöst! Akzeptiert, vielen Dank! – FisherCoder

1

könnten Sie verwenden:

sorted(d.items(), key=lambda x: x[1]) 

Dies wird das Wörterbuch durch die Werte von jedem Eintrag im Wörterbuch vom kleinsten zum größten sortieren.

Verwandte Themen