Как отсортировать словарь по значениям от большего к меньшему?
Как отсортировать словарь по значениям от большего к меньшему в Python?
Ответы (2 шт):
Автор решения: Zhihar
→ Ссылка
словарь сам по себе не сортируется, потому что это зависит от того как именно обрабатывается ключ
однако вы можете перевести словарь в список и отсортировать уже список
my_list = sorted(list(my_dict.items()))
Автор решения: GrAnd
→ Ссылка
Начиная с версии Python 3.6 порядок элементов словаря сохраняется с момента создания. Так что можно просто создать новый словарь из элементов старого, предварительно отсортировав их. Или воспользоваться олд-скульным OrderedDict.
from collections import OrderedDict
d = {"z":44, "a":102, "c":-2}
print("dict =", d)
nd = dict(sorted(d.items(), key=lambda x: x[1]))
print("new dict =", nd)
od = OrderedDict(sorted(d.items(), key=lambda x: x[1]))
print("ordered dict =", od)
Вывод:
dict = {'z': 44, 'a': 102, 'c': -2}
new dict = {'c': -2, 'z': 44, 'a': 102}
ordered dict = OrderedDict([('c', -2), ('z', 44), ('a', 102)])