2017-01-27 6 views
4

В словарь не упорядочен выход также не заказывали:соответствующего словаря ключей и значений выходов

>>> d = dict(b = 1, a = 2, z = 3) 
>>> d.keys() 
['a', 'z', 'b'] 
>>> d.values() 
[2, 3, 1] 

Но являются keys и values выходы выше всегда в соответствующем порядке?

+1

Примечания, (педантичному точки) словари упорядочены в CPython 3.6 http://stackoverflow.com/questions/39980323/dictionaries-are-ordered-in-cpython-3-6 –

+0

@Chris_Rands Я прочитал это, и похоже, что неясно, должно ли это быть полагаться. –

+0

@ayhan Текст и образец здесь яснее, чем в другом вопросе. –

ответ

6

Ответ да.

От python 2 documentation:

Если элементы(), ключи(), значения(), iteritems(), iterkeys(), и itervalues ​​() вызываются без промежуточных модификаций в словарь, списки будет непосредственно соответствовать. Это позволяет создавать пары (значение, ключ), используя zip(): pairs = zip (d.values ​​(), d.keys()). То же самое относится к методам iterkeys() и itervalues ​​(): pairs = zip (d.itervalues ​​(), d.iterkeys()) дает одинаковое значение для пар. Другой способ создать тот же список - пары = [(v, k) для (k, v) в d.iteritems()].

И от python 3 documentation

Если ключи, значение и мнение пунктов повторяются через без промежуточных модификаций в словарь, порядок элементов непосредственно соответствует

+0

Стоит добавить также и для Python 3: «если ключи, значения и представления элементов повторяются без каких-либо промежуточных изменений в словаре, порядок элементов будет напрямую соответствовать ...» https://docs.python.org/3/ library/stdtypes.html # dictionary-view-objects –

+0

они изменили текст, но все равно такое же поведение. Спасибо Крису –