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