python字典中的键值一致性

python字典中的键值一致性,python,Python,这可能是一个很难回答的问题。对于python中的任何字典“d”,这总是正确的: dict( zip( d.keys(), d.values() ) ) == d 键和值的返回顺序是否相同 是的,总是这样。由Python iff保证,对附加项没有干涉修改 相关规范: 这通常更好,因为它可以防止dict失去同步,并使用可忽略不计的额外内存: dict((k,v)表示d.iteritems()中的k,v)如果您询问键和值是否以相同的顺序返回,答案是肯定的。报告说: 如果调用项()、键()、值()、

这可能是一个很难回答的问题。对于python中的任何字典“d”,这总是正确的:

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

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

是的,总是这样。由Python iff保证,对附加项没有干涉修改

相关规范:

这通常更好,因为它可以防止dict失去同步,并使用可忽略不计的额外内存:


dict((k,v)表示d.iteritems()中的k,v)

如果您询问键和值是否以相同的顺序返回,答案是肯定的。报告说:

如果调用
项()
键()
值()
iteritems()
iterkeys()
itervalues()
时没有对字典进行任何修改,则列表将直接对应


如果您询问
dict(zip(d.keys(),d.values())==d
是否在所有情况下都会计算为True,那么答案是否定的。您可以有多个线程,其中一个线程更改
d
,而另一个线程正在执行
d.keys()
d.values()
dict(…)
。这将创建干预性修改,使上述条件无效。

是的,这是一种保证行为:-)

键和值的列出顺序与d项返回的顺序相同


注意,在多线程环境中,最好一次提取
d.items()
所有项,而不是冒险在连续调用
d.keys()
d.values()

之间发生突变,不过解包是不必要的,
dict(d.iteritems())
也同样有效。就这一点而言,大多数dict(包括
dict
)都是特例映射(通常在iterables上),而且都是这样做的,尽管我不确定它是否是通用的。@delnan对你的评论投了赞成票,但我认为在这里贴近示例是有意义的。你永远不会真正想要对d.iteritems()中的k,v执行
dict((k,v)操作
dict(d.iteritems())
,因为
d.copy()
更好。@delan dict(x)查找x.keys并调用它以获得一个可编辑的键。如果这样做有效,它将使用x[]获取所有值,并从中构建dict。