Страницы

Поиск по вопросам

пятница, 26 октября 2018 г.

Сортировка ключей словаря по возрастанию

Приветствую.
Дан словарь
{'2.3': ['0', '1'], '4.9': ['0', '1'], '4.7': ['0', '1'], '3.5': ['0', '1'], '2.4': ['0', '1'], '3.17': ['0', '1'], '4.8': ['0', '1'], '3.6': ['0']}
Необходимо отсортировать его по ключам в порядке возрастания. Пытаюсь сделать так:
for x in sorted(dict_list.keys(), key=lambda x : float(x[:len(x)-1])): print(x)
Получается
2.3, 2.4, 3.5, 3.6, 3.17, 4.9, 4.7, 4.8
В общем, сортирует он явно как-то не так. Подскажите, пожалуйста, как отсортировать в порядке возрастания ключей? Заранее спасибо.


Ответ

Если вы хотите вернуть отсортированный список ключей/значений, можно просто отсортировать словарь по его ключам:
for k in sorted(dict_list.keys()): print (k, ':', dict_list[k])
Если нужно хранить отсортированные пары ключ/значение, попробуйте использовать OrderedDict
from collections import OrderedDict
#отсортирует по возрастанию ключей словаря OrderedDict(sorted(dict_list.items(), key=lambda t: t[0]))
Документация по OrderedDict
UPD по просьбе автора сортировка по возрастанию с условием, что 3.17 должно быть последним
for i in sorted(dict_list.items(), key=lambda x: (len(x[0]), x[0])): print (i[0])
Если 3.17 должно быть первым, можно просто добавить - в условие:
..lambda x: (-len(x[0]), x[0]))

Комментариев нет:

Отправить комментарий