2013-08-09 13 views
6

Ich habe ein Python-Wörterbuch wie folgt aus:Sortieren Python dict von Datetime-Wert

{ 
    'apple': datetime.datetime(2012, 12, 20, 0, 0, tzinfo=<UTC>), 
    'orange': datetime.datetime(2012, 2, 4, 0, 0, tzinfo=<UTC>), 
    'raspberry': datetime.datetime(2013, 1, 9, 0, 0, tzinfo=<UTC>) 
} 

Was ist der beste Weg, um das Wörterbuch durch die Datums- und Uhrzeitwerten zu sortieren? Ich suche nach einer Liste mit den Schlüsseln in der Reihenfolge von den neuesten zu den ältesten.

Antwort

11

Sie könnten die Tasten wie folgt sortieren:

sorted(dct, key=dct.get) 

die Sorting Mini-HOW TO für eine Erklärung dafür finden und andere Techniken zum Sortieren.

1

Bedenkt man, dass die Frage stellt, wie durch die Datums- und Uhrzeitwerten sortieren, hier ist eine mögliche Antwort:

sorted(dct.items(), key=lambda p: p[1], reverse=True) 

=> [('raspberry', datetime.datetime(2013, 1, 9, 0, 0)), 
    ('apple', datetime.datetime(2012, 12, 20, 0, 0)), 
    ('orange', datetime.datetime(2012, 2, 4, 0, 0))] 

Wenn Sie in die Tasten nur interessiert sind:

[k for k, v in sorted(dct.items(), key=lambda p: p[1], reverse=True)] 

=> ['raspberry', 'apple', 'orange'] 
0

Es ist wirklich einfach, Sie tun nur, etwas wie:

from operator import itemgetter 
sorted(a.items(),key=itemgetter(1),reverse=True) 
+0

Sie nicht brauchen 'itemgetter' hier, da die' get' Methode der dicts Werte zurückgibt (siehe @ unutbu Antwort) –

0

Versuchen Sie, die Liste der Schlüssel, wie unten für Wörterbuch dict:

[item[0] for item in sorted(dict.items(), key=lambda val: val[1])]