Страницы

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

суббота, 14 декабря 2019 г.

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

#python #django


Приветствую.

Дан словарь 

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


В общем, сортирует он явно как-то не так. Подскажите, пожалуйста, как отсортировать
в порядке возрастания ключей? Заранее спасибо.
    


Ответы

Ответ 1



Если вы хотите вернуть отсортированный список ключей/значений, можно просто отсортировать словарь по его ключам: 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]))

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

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