python的dict.items()是否总是返回相同的顺序?

时间:2018-09-11 03:31:22

标签: python dictionary python-2.x python-internals iteritems

是否确保python 2.X的内置方法dict.items()dict.iteritems()始终以相同顺序返回项目?还是这些方法不是确定性的?

3 个答案:

答案 0 :(得分:5)

在程序的一次运行中,并且如果字典d之间没有突变,则

d.items()
d.iteritems()
d.keys()
d.iterkeys()
d.values()
d.itervalues()

彼此都一致,并且每次都返回相同的序列。

但是,如果您修改字典,则字典可能会缩小或增长,并在内部重新排列自身,从而改变顺序。然后,这些将保持不变,直到下一个突变。

编辑:一个例外,这是故意的。如果仅替换与现有键关联的值,则顺序将更改。因此,如果k in dTrue,则d[k] = v是无害的。但是,如果您添加新密钥或删除密钥,则所有选择均会关闭。

答案 1 :(得分:0)

如果您感兴趣,则可以使用Visual Code并在感兴趣的每个点添加断点,并监视局部变量在代码运行之间的差异……无论是通过同一程序流还是通过单独的程序流跑。您还可以添加表情手表。这将允许您自己确认字典方法的行为,包括dict.items()和dict.iteritems()

答案 2 :(得分:-1)

您需要这样的自定义功能:

d = {'a': 4, 'c': 1, 'b': 2, 'd': 3}
def sorteddict(d={}):
    return sorted(d.items(),key=lambda x: x[1])
print(sorteddict(d))