Как отсортировать словарь по алфавиту в python?

Пользователь

от jerrold_langworth , в категории: Python , 3 года назад

Как отсортировать словарь по алфавиту в python?

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

2 ответа

Пользователь

от NicolasSsh , 3 года назад

@jerrold_langworth  Вы можете использовать метод .sorted() для сортировки словаря по алфавиту.


 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
costs = {
    "Banana" : 10,
    "Apple" : 7,
    "Orange" : 9,
    "Blueberries" : 14,
    "Kiwi" : 12
}
sorted_costs = dict()

sorted_array = sorted(costs.items())

for cost in sorted_array:
    sorted_costs[cost[0]] = cost[1]

print(sorted_costs)

# Вывод : {'Apple': 7, 'Banana': 10, 'Blueberries': 14, 'Kiwi': 12, 'Orange': 9}

Пользователь

от velma , 2 года назад

@jerrold_langworth 

В Python словари не поддерживают упорядоченное представление элементов, поскольку ключи словаря хранятся в хеш-таблице и не имеют явного порядка.


Однако, начиная с версии Python 3.7, порядок элементов в словаре соответствует порядку их добавления, поэтому, если словарь был создан в определенном порядке, вы можете сохранить этот порядок, используя специальный класс collections.OrderedDict.


Вот пример с использованием OrderedDict для сортировки словаря по ключам в алфавитном порядке:

1
2
3
4
5
6
import collections

my_dict = {'b': 2, 'a': 1, 'd': 4, 'c': 3}
sorted_dict = collections.OrderedDict(sorted(my_dict.items()))

print(sorted_dict)


Этот код создает словарь my_dict с неупорядоченными элементами, затем использует sorted() для сортировки элементов по ключу в алфавитном порядке, и затем использует OrderedDict для создания упорядоченного словаря sorted_dict. Результат выполнения кода будет:

1
OrderedDict([('a', 1), ('b', 2), ('c', 3), ('d', 4)])


Обратите внимание, что элементы в упорядоченном словаре sorted_dict будут отсортированы по ключам в алфавитном порядке. Если вы хотите сортировать элементы по значению, а не по ключу, вы можете использовать параметр key функции sorted() для указания сортировки по значению, а не по ключу.