Консистенция ключевого значения в словарях python

Это, вероятно, вопрос о нобе. Для любого словаря 'd' в python это всегда True:

dict( zip( d.keys(), d.values() ) ) == d 

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

3 Solutions collect form web for “Консистенция ключевого значения в словарях python”

Да, это всегда так. Гарантируется Python, если нет никаких промежуточных модификаций для ditionary.

Соответствующие спецификации: http://docs.python.org/library/stdtypes.html#dict.items

Это лучше, как правило, потому, что он защищает от дикта, выходящего из синхронизации, и использует незначительную дополнительную память:

dict((k,v) for k,v in d.iteritems())

Если вы спрашиваете, возвращаются ли ключи и значения в том же порядке, ответ будет «Да». В документации говорится:

Если items() , keys() , values() , iteritems() , iterkeys() и itervalues() вызывают без промежуточных изменений в словаре, списки будут непосредственно соответствовать.

Если вы спрашиваете, будет ли dict( zip( d.keys(), d.values() ) ) == d всегда будет оцениваться True при любых обстоятельствах, ответ будет Нет. У вас может быть несколько потоков, с одним изменением d а другой – d.keys() , d.values() или dict(...) . Это создаст промежуточные изменения, недействительные условия, указанные выше.

Да, это гарантированное поведение 🙂

Ключи и значения перечислены в том же порядке, что и возвращаемые d.items : http://docs.python.org/library/stdtypes.html#dict.items

Обратите внимание, что в многопоточных средах лучше всего извлекать d.items() сразу, а не рисковать мутацией между последовательными вызовами d.keys() и d.values() .

  • файл с несколькими критериями в python?
  • Как установить scipy на окна 10?
  • Объект MyClass не имеет атрибута '__getitem__'
  • Учитывая большой список URL-адресов, какой способ проверить, какие из них активны / неактивны?
  • расположение исходного кода библиотеки python os
  • Найдите, где установлен python (если он не является стандартным dir)
  • zip () альтернатива для итерации через два итератора
  • Pythonic способ проверить: все элементы оцениваются в False -OR- все элементы оцениваются в True
  • Python - лучший язык программирования в мире.