#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]))
Комментариев нет:
Отправить комментарий