Sortierung einer Liste gemässe Dictionary-Eintrag.

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
pfnuesel
User
Beiträge: 2
Registriert: Freitag 27. Januar 2012, 09:51

Hallo zusammen. Bin neu hier. :)

Ich habe ein Dictionary:

Code: Alles auswählen

dict_mc={}
dict_mc['bsp1']=['text',1,16]
dict_mc['bsp2']=['beispiel',2,26]
dict_mc['abc']=['alphabet',3,36]
dict_mc['asdf']=['ghjkl',7,46]
und eine Liste

Code: Alles auswählen

ls_mc=['bsp1', 'asdf', 'abc']
Nun möchte ich die Liste sortieren gemäss was im Dictionary an stelle dict_mc[name][1] steht. Ich kann das zwar über eine mühsame Schleife machen, bin jedoch überzeugt dass es auch viel eleganter geht, wahrscheinlich mit einem key für den sort Befehl. Jedoch habe ich es nicht geschafft, kann mir jemand auf die Sprünge helfen?

Vielen Dank für eure Hilfe!
BlackJack

Du brauchst halt eine Funktion, die ein Element von `ls_mc` entgegen nimmt und einen Wert liefert, nach dem sortiert werden soll. Also im Grunde genau der Ausdruck, den Du schon selbst geschrieben hast:

Code: Alles auswählen

In [28]: dict_mc
Out[28]: 
{'abc': ['alphabet', 3, 36],
 'asdf': ['ghjkl', 7, 46],
 'bsp1': ['text', 1, 16],
 'bsp2': ['beispiel', 2, 26]}

In [29]: ls_mc
Out[29]: ['bsp1', 'asdf', 'abc']

In [30]: sorted(ls_mc, key=lambda s: dict_mc[s][1])
Out[30]: ['bsp1', 'abc', 'asdf']
pfnuesel
User
Beiträge: 2
Registriert: Freitag 27. Januar 2012, 09:51

Funktioniert einwandfrei! Vielen Dank BlackJack!

Ich war nahe dran, geht wohl in die Kategorie Wald vor lauter Bäumen nicht gesehen. :wink:
Antworten