2016-08-05 3 views
0

Я пытаюсь сортировать упорядоченный диск, но без везения. Я попытался с помощью метода найденного на https://docs.python.org/2/library/collections.html#ordereddict-examples-and-recipesСортировка OrderedDict не работает

 for d in results: 
      print(d) 

     d = OrderedDict(results) 

     for key in d: 
      print(d[key]) 

     hi = OrderedDict(sorted(d.items(), key=lambda t: t[0])) 

     for key in hi: 
      print(hi[key]) 

это печатает:

('GOOG/CPH_43740', -1.6749609142444124) 
('GOOG/CPH_CARL_B', 0.66869383328307086) 
('GOOG/CPH_CHR', 0.6270772411141563) 
('GOOG/CPH_EGE_B', -0.89015989892984237) 
('GOOG/CPH_GEN', 0.46485175444884497) 

-1.67496091424 
0.668693833283 
0.627077241114 
-0.89015989893 
0.464851754449 

-1.67496091424 
0.668693833283 
0.627077241114 
-0.89015989893 
0.464851754449 

Который не сортируется, по убыванию. Я полностью потерялся здесь?

+4

Вы явно отсортированных в порядке возрастания ** ** ключ, который является именно то, что вы получили , – jonrsharpe

+0

Это не должно быть закрыто как дубликат. Сортировка по значению - это одно; сохраняя, что в новом OrderedDict, определяющем новый порядок вставки, требуется объявить новый OrderedDict. (cc: @PadraicCunningham) – smci

+0

@ Ответ JacuesdeHooge прав, и я хочу перенаправить ["вернуть словарь после сортировки"] (https://stackoverflow.com/questions/41082822/return-a-dictionary-after-sorting) здесь как канонический. Это необходимо вновь открыть в качестве отдельного вопроса. – smci

ответ

2

Предполагая, что вы хотите отсортировать по номерам, которые имеют индекс 1, а не 0 внутри ваших кортежей:

for d in results: 
     print(d) 

    d = OrderedDict(results) 

    for key in d: 
     print(d[key]) 

    hi = OrderedDict(sorted(d.items(), key=lambda t: t[1])) 

    for key in hi: 
     print(hi[key]) 
Смежные вопросы