代码之家  ›  专栏  ›  技术社区  ›  Saqib Ali

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

  •  2
  • Saqib Ali  · 技术社区  · 6 年前

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

    2 回复  |  直到 6 年前
        1
  •  5
  •   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 是无害的。但是,如果添加新密钥或删除密钥,则所有赌注都将取消。

        2
  •  -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))