2015-03-23 6 views
-1

У меня есть два списка, которые я переписываю в словарь.Python command dict (zip()) изменяет порядок

Два списка являются-

a = ['a','b','c','d'] и b = [1,2,3,4].

Когда я запустить команду

>>> d = dict(zip(a,b)) 
>>> d 

я

{'a': 1, 'c': 3, 'b': 2, 'd': 4} 

тогда как ожидаемая величина {'a': 1, 'b': 2, 'c': 3, 'd': 4}

Почему это изменение в порядке ключей?

+2

Поскольку словари являются ** неупорядоченными структурами данных **. Используйте 'collections.OrderedDict()', если порядок значителен. –

ответ

2

В ключах dict нет неотъемлемого «очевидного» порядка. Следует признать, что the docs только объяснить это для CPython, но также отметить

Если элементы(), ключи(), значение(), iteritems(), iterkeys(), и itervalues ​​() вызываются без промежуточного изменения в словаре , списки будут непосредственно соответствовать.

, который говорит, что в противном случае они могут измениться.

(Обратите внимание, что есть заказ, но он включает в себя хэши ключей, поэтому это не так просто, как «a до b», и, в частности, поскольку несколько лет назад он может изменяться с каждым новый вызов исполняемого файла.)

1

В словаре нет ни одного ордера.

{'a': 1, 'b': 2, 'c': 3, 'd': 4} == {'a': 1, 'c': 3, 'b': 2, 'd': 4} 
Смежные вопросы