Seite 1 von 1

Sortierung einer Liste gemässe Dictionary-Eintrag.

Verfasst: Freitag 27. Januar 2012, 10:00
von pfnuesel
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!

Re: Sortierung einer Liste gemässe Dictionary-Eintrag.

Verfasst: Freitag 27. Januar 2012, 10:11
von 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']

Re: Sortierung einer Liste gemässe Dictionary-Eintrag.

Verfasst: Freitag 27. Januar 2012, 10:32
von pfnuesel
Funktioniert einwandfrei! Vielen Dank BlackJack!

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