Подтвердить что ты не робот

В каком порядке python отображает словарные ключи?

>>> D = {'a': 1, 'b': 2, 'c': 3}
>>> D
{'a': 1, 'c': 3, 'b': 2}

Я просто сделал это в оболочке Python, и мне просто интересно, почему ключ "c" будет после ключа "b"???

4b9b3361

Ответ 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)]