@WebDeveloper2016

Почему путается словарь?

Есть код вот такой простенький:
def enumdict(d):
	for key, value in d.items():
		yield (key, value)
		
d = { 'a': 0, 'b': 1 }
e = dict(enumdict(d))
print(e)

Вопрос: почему выводится то {'a': 0, 'b': 1} то {'b': 1, 'a': 0} совершенно случайным образом? Почему элементы словаря путаются и как этого избежать?
  • Вопрос задан
  • 282 просмотра
Решения вопроса 1
sim3x
@sim3x
дикт основная структура питона - ее нужно знать лучше всего
дикт быстрый
дикт имеет константную скорость доступа для каждого елемента

для твоего случая нужен OrderedDict
Ответ написан
Пригласить эксперта
Ответы на вопрос 4
Словари являются неупорядоченными структурами, элементы словаря выводятся в произвольном порядке. Чтобы вывести элементы с сортировкой по ключам, следует получить список ключей, а затем воспользоваться методом sort().
Ответ написан
@Eugen_p
1. Почитайте документацию, там об этом все сказано.
2. Использовать OrderDict из collections.
Ответ написан
Комментировать
Словари неупорядоченная коллекция. То есть элементы располагаются не в какой-то последовательности, а случайно. Так заложено в данном языке.
Пример:
e = {'a': 0, 'b': 1, 'c': 2, 'd': 3, 'e': 5, 'f': 4}
print(e)

Вывод:
{'d': 3, 'e': 5, 'a': 0, 'f': 4, 'b': 1, 'c': 2}

Нужна упорядоченная коллекция - используйте упорядоченную(например списки):
g = [('a', 0), ('b', 1), ('c', 2), ('d', 3)]
print(g)

[('a', 0), ('b', 1), ('c', 2), ('d', 3)]
Ответ написан
Комментировать
@abcd0x00
Словарь в питоне - это такое множество, у которого к каждому элементу прицеплено какое-то значение. А называется это "нагруженное множество" - одна из динамических структур данных. А во множестве элементы не упорядочены, зато очень быстрый поиск.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы