В каком порядке python отображает словарные ключи?
>>> D = {'a': 1, 'b': 2, 'c': 3}
>>> D
{'a': 1, 'c': 3, 'b': 2}
Я просто сделал это в оболочке Python, и мне просто интересно, почему ключ "c" будет после ключа "b"???
Ответы
Ответ 1
Приказ имеет отношение к тому, как они работают внутри, и в каком порядке они попадают в хэш-таблицу. Это, в свою очередь, зависит от хэш-значения ключей, порядка, в который они были вставлены, и какой реализации Python вы используете.
Порядок произвольный (но не случайный), и никогда не будет полезно узнать, какой порядок он будет.
Чтобы получить отсортированный список ключей, просто используйте sorted(D)
, который в вашем случае вернет ['a', 'b', 'c']
.
Ответ 2
В Python 2.7 вы можете использовать Ordered Dict.
Ответ 3
Из документация:
Лучше всего подумать о словаре как неупорядоченном наборе пар ключ: значение с требованием, чтобы ключи были уникальными (в пределах одного словаря).
Ответ 4
В любом порядке это радует. Такова природа словаря. Если вы хотите его в определенном порядке, вы должны сделать это сами:
>>> d = {'pax': 1, 'george': 2, 'guido' : 3}
>>> d
{'pax': 1, 'george': 2, 'guido': 3}
>>> [(key,d[key]) for key in sorted(d)]
[('george', 2), ('guido', 3), ('pax', 1)]