python词典中的键值一致性

时间:2011-12-02 23:22:58

标签: python

这可能是一个菜鸟问题。对于python中的任何字典'd',这总是为True:

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

键和值是否以相同的顺序返回?

3 个答案:

答案 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()之间冒险。