这可能是一个菜鸟问题。对于python中的任何字典'd',这总是为True:
dict( zip( d.keys(), d.values() ) ) == d
键和值是否以相同的顺序返回?
答案 0 :(得分:6)
是的,它总是如此。如果没有对ditionary的干预修改,则由Python保证。
相关规范:http://docs.python.org/library/stdtypes.html#dict.items
这通常更好,因为它可以防止dict不同步并使用可忽略不计的额外内存:
dict((k,v) for k,v in d.iteritems())
答案 1 :(得分:2)
如果您询问是否按相同顺序返回键和值,则答案为是。 documentation说:
如果
items()
,keys()
,values()
,iteritems()
,iterkeys()
和itervalues()
被调用而没有对字典进行干预,列表将直接对应。
如果您询问dict( zip( d.keys(), d.values() ) ) == d
在所有情况下是否始终评估为True,则答案为否。您可以拥有多个线程,其中一个更改d
而另一个正在执行d.keys()
1}},d.values()
或dict(...)
。这将产生干预性修改,使上述条件无效。
答案 2 :(得分:2)
是的,这是一种保证行为: - )
键和值的列出顺序与 d.items 返回的顺序相同:http://docs.python.org/library/stdtypes.html#dict.items
请注意,在多线程环境中,最好一次性提取d.items()
,而不是在连续调用d.keys()
和d.values()
之间冒险。