2013-08-09 12 views
6

Mam słownika Pythona takiego:Sortuj Python dict o wartości datetime

{ 
    '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>) 
} 

Jaki jest najlepszy sposób, aby posortować słownika wartości datetime? Szukam wyjścia listy z kluczami w kolejności od najnowszego do najstarszego.

Odpowiedz

11

Można sortować klucze jak to:

sorted(dct, key=dct.get) 

Zobacz Sorting Mini-HOW TO o wyjaśnienie tego i innych technik sortowania.

1

Mając na uwadze, że pytanie dotyczy sposobu sortowania przez wartości datetime, oto możliwa odpowiedź:

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))] 

Jeśli jesteś zainteresowany tylko w tonacjach:

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

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

To naprawdę proste, po prostu wykonaj, coś w stylu:

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

nie trzeba 'itemgetter' tutaj ponieważ' GET' metoda dicts zwraca wartości (patrz @ odpowiedź unutbu za) –

0

Spróbuj znaleźć listę kluczy jak poniżej słowniku dict:

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