нужна помощь с функцией сортировки в Python - PullRequest
2 голосов
/ 04 августа 2010

Содержимое моего словаря выглядит так: -

>>> dict
{'6279': '45', '15752': '47', '5231': '30', '475': '40'}

Я пытался использовать функцию сортировки клавишЯ заметил, что функция сортировки для клавиши не работает - 15752. Пожалуйста, найдите ниже: -

>>> [k for k in sorted(dict.keys())]
['15752', '475', '5231', '6279']

Может кто-нибудь указать мне способ обойти это?

Спасибо


Мой ожидаемый результат: -

['475', '5231', '6279', '15752']

Ответы [ 4 ]

10 голосов
/ 04 августа 2010

ах вы хотите отсортировать по числовому значению, а не по строке, поэтому вам следует преобразовать строки в числа, используя int(s) в какой-то момент раньше, или просто использовать sorted(dict.keys(), key=int)

2 голосов
/ 04 августа 2010

Если они ВСЕ целые,

sorted(dict, lambda x, y: cmp(int(x), int(y)))
2 голосов
/ 04 августа 2010

Если мое предположение в моем комментарии было верным, и вы хотите, чтобы числовые ключи были отсортированы, измените строку кода на:

sorted([int(k) for k in test.keys()])
# returns [475, 5231, 6279, 15752]
1 голос
/ 04 августа 2010

Если вы хотите выполнить числовую сортировку, тогда сохраняйте числа в вашем словаре, а не в строках, тогда это будет просто работать

>>> dict
{6279: '45', 15752: '47', 5231: '30', 475: '40'}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...