2017-01-27 60 views
4

作为字典不排序的输出也不会下令:相应字典的键和值输出

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

但是keysvalues输出上述总是在相应的订单?

+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())为pair提供相同的值。创建相同列表的另一种方式是在d.iteritems()中针对(k,v)的pairs = [(v,k))。

而且从python 3 documentation

如果键,值和项目的看法是,没有插入修改字典遍历,项目的顺序将直接对应

+0

也值得加入Python 3:“如果键,值和项目视图迭代完成,不需要对词典进行中间修改,项目的顺序将直接对应......”https://docs.python.org/3/ library/stdtypes.html#dictionary-view-objects –

+0

他们改变了文字,但仍然是同样的行为。谢谢克里斯 –