【问题标题】:Does python's dict.items() always return the same order?python 的 dict.items() 是否总是返回相同的顺序?
【发布时间】:2018-09-11 03:31:21
【问题描述】:

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

【问题讨论】:

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


【解决方案1】:

在程序的单次运行中,如果 dict d 之间没有发生突变,那么

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

都与each一致,且每次返回相同的序列。

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

编辑:一个例外,这是非常刻意的。如果您只是替换与现有键关联的值,则顺序将不会更改。所以如果k in dTrued[k] = v 是无害的。但是,如果您添加新密钥或删除密钥,所有赌注都将失败。

【讨论】:

    【解决方案2】:

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

    【讨论】:

      【解决方案3】:

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

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

      【讨论】:

        猜你喜欢
        • 2016-06-07
        • 1970-01-01
        • 1970-01-01
        • 2016-07-10
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-09-20
        • 1970-01-01
        相关资源
        最近更新 更多