AW: [mailinglist] Re: [Python-de] Dictionary sortieren???

Uwe Schmitt schmitt at num.uni-sb.de
Wed May 28 18:41:28 EDT 2003


Betreff: [mailinglist] Re: [Python-de] Dictionary sortieren???


>>habs selber gefunden:

>>def sortDictBy(list, key):
>>    nlist = map(lambda x, key=key: (x[key], x), list)
>>    nlist.sort()
>>    return map(lambda (key, x): x, nlist)

>> keine Ahung was das macht aber es funktioniert!

ist gar nicht so schwer. schritt für schritt:

   lambda x, key=key: (x[key],x)

definiert eine funktion mit parametern x,key die (x[key],x) zurückliefert.
ist das gleiche wie

   def fun(x,key=key): return (x[key],x)

nur dass lambda eine temporäre funktion ohne namen erzeugt.

map() wendet diese funktion auf die ganze liste an, sprich baut

aus

    [ dict1, dict2, ... ]

die liste

    [ (key1, dict1), (key2, dict2), ... ]

analog zu meiner geposteten lösung mit list comprehension.
in deinem beispiel sind dann die keys die vornamen.

sort() sortiert jetzt diese tupel lexikographisch (sprich zuerst
nach den ersten eintrag).

und das letzte map macht aus [ ( key7, dict7), (key3, dict3)... ]
wieder

     [ dict7, dict3, ...]


 alles klar ?

gruss, uwe




More information about the Python-de mailing list