Py学习  »  Python

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

Saqib Ali • 5 年前 • 1511 次点击  

是否保证python 2.x的内置方法 dict.items() dict.iteritems() 是否始终按相同顺序返回项目?或者这些方法是非确定性的?

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/39064
 
1511 次点击  
文章 [ 2 ]  |  最新文章 5 年前
wailinux
Reply   •   1 楼
wailinux    6 年前

您需要这样的定制功能:

d = {'a': 4, 'c': 1, 'b': 2, 'd': 3}
def sorteddict(d={}):
    return sorted(d.items(),key=lambda x: x[1])
print(sorteddict(d))
Tim Peters
Reply   •   2 楼
Tim Peters    6 年前

在程序的一次运行中,并提供了一个dict d 在两者之间没有变异,那么

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

它们都是一致的,并且每次都返回相同的序列。

但是,如果修改dict,它可能会在内部收缩或增长并重新排列,这会改变顺序。在下一个突变之前,它们将保持不变。

编辑:有一个例外,这是经过深思熟虑的。如果仅替换与现有键关联的值,则顺序将 改变。所以如果 k in d True , d[k] = v 是无害的。但是,如果添加新密钥或删除密钥,则所有赌注都将取消。