python';s dict.items()是否总是返回相同的顺序?
Python2.X的内置方法python';s dict.items()是否总是返回相同的顺序?,python,dictionary,python-2.x,python-internals,iteritems,Python,Dictionary,Python 2.x,Python Internals,Iteritems,Python2.X的内置方法dict.items()和dict.iteritems()是否保证总是以相同的顺序返回项目?或者这些方法是不确定的?在一个程序的一次运行中,如果dictd没有在其间变异,那么 d.items() d.iteritems() d.keys() d.iterkeys() d.values() d.itervalues() 都是一致的,每次都返回相同的序列 但是如果你修改dict,它可能会收缩或增长,并在内部重新排列,这可能会改变顺序。在下一次突变之前,它将保持不变 编辑
dict.items()
和dict.iteritems()
是否保证总是以相同的顺序返回项目?或者这些方法是不确定的?在一个程序的一次运行中,如果dictd
没有在其间变异,那么
d.items()
d.iteritems()
d.keys()
d.iterkeys()
d.values()
d.itervalues()
都是一致的,每次都返回相同的序列
但是如果你修改dict,它可能会收缩或增长,并在内部重新排列,这可能会改变顺序。在下一次突变之前,它将保持不变
编辑:一个例外,这是经过深思熟虑的。如果仅替换与现有键关联的值,则顺序不会更改。因此,如果d中的
k
为True
,d[k]=v
是无害的。但是,如果您添加新密钥或删除密钥,则所有赌注均无效。您需要这样的自定义功能:
d = {'a': 4, 'c': 1, 'b': 2, 'd': 3}
def sorteddict(d={}):
return sorted(d.items(),key=lambda x: x[1])
print(sorteddict(d))
如果您感兴趣,您可以使用可视化代码,在您感兴趣的每个点添加断点,并监视局部变量在代码运行期间的差异。。。无论是通过相同的程序流还是通过单独的运行。您还可以添加表达式手表。这将允许您自己确认dictionary方法的行为,包括dict.items()和dict.iteritems()相关: