2015-10-12 3 views
1

У меня есть словарь, где значения чисел с плавающей точкой. Я пытаюсь сортировать словарь в порядке убывания значений, и я пытаюсь разорвать связи, сортируя ключи в порядке возрастания.Сортировка питона словарь

Я осуществил следующий код для достижения этой цели:

for key, value in sorted(dictionary.items(), key=lambda x: (-x[1], x[0])): 

    print key, value 

Некоторых моих ценностей кажется неуместным.

2315 0.000232471518033 

2823 0.000232414850716 

3649 0.00023239634392 

3695 0.00023239634392 

3883 0.00023239634392 

3479 0.00023239634392 

3562 0.00023239634392 

3613 0.00023239634392 

В соответствии с приведенной выше строки кода, начиная с 3479 должны быть напечатаны до линии, начиная с 3649.

Любые идеи о том, что может быть не так с тем, как я отсортированный словарь? Имеет ли он какое-либо отношение к точности чисел с плавающей запятой?

+0

Прочтите этот http://stackoverflow.com/questions/9001509/how-can-i-sort-a-dictionary-by-key – grael

+0

Возможный дубликат [Сортировка словаря Python по значению] (http: // stackoverflow .com/вопросы/613183/сортировать-а-питон-словаря по значению) – FallenAngel

+0

@grael OP сортировка по значению, или, вернее, лексикографически '(значение, ключ)' – dhke

ответ

7

Он имеет какое-либо отношение к точности чисел с плавающей точкой?

Да.

>>> 0.0002323963439201 
0.0002323963439201 
>>> print 0.0002323963439201 
0.00023239634392 
+0

Нет, это не о точности. Python 'dict'ionaries неупорядочены. – FallenAngel

+0

@FallenAngel: Вы * сделали * см. Часть, где вызывается 'sorted()', правильно? –

+0

@FallenAngel словари не упорядочены, но результат 'sorted' является – jonrsharpe

0

Я думаю, что заказываете относительно неправильных составляющих словаря. Вы можете просто сделать:

for key, value in sorted(dictionary.items(), key=lambda x: (x[0]): 
print key, value 

если вы хотите сделать заказ на ключ, и

for key, value in sorted(dictionary.items(), key=lambda x: (-x[1]): 
print key, value 

если вы хотите сделать заказ на одно значение.

+1

За исключением того, что искатель хочет сортировать значение по убыванию, а затем по ключу. –

+0

ОК, я понимаю – Helios83

Смежные вопросы