【问题标题】:Is dict definition order guaranteed to be left to right? [duplicate]dict定义顺序是否保证从左到右? [复制]
【发布时间】:2021-07-15 20:31:18
【问题描述】:

从 3.7 开始的最新版本的 Python 保证 dict 中的项目顺序将匹配插入顺序。所以以下总是会产生相同的结果:

>>> d = {}
>>> d['a'] = 1
>>> d['b'] = 2
>>> d['c'] = 3
>>> list(d.items())
[('a', 1), ('b', 2), ('c', 3)]

但是当你同时定义多个key的时候,求值顺序是不是保证是从左到右呢?一次快速测试表明,这是一次,但它是可以依赖的吗?

>>> d = {'z': 26, 'y': 25, 'x': 24}
>>> list(d.items())
[('z', 26), ('y', 25), ('x', 24)]

由官方 Python 文档或 PEP 支持的引用是最好的。

【问题讨论】:

  • 确实,@jorf.brunning 链接的帖子中的accepted answer 指向Python docs on expressions,这很清楚:“运行理解时,会插入生成的键和值元素在新词典中按它们产生的顺序排列。”编辑:它还说“如果给出了以逗号分隔的键/数据对序列,则从左到右评估它们以定义字典的条目”,这在这里可能更相关。
  • @fsimonjetz mmm 好吧,对于这个问题,相关部分是“如果给出逗号分隔的键/数据对序列,则从左到右评估它们以定义字典的条目: 每个键对象都被用作字典中的键来存储相应的数据。这意味着您可以在键/数据列表中多次指定相同的键,并且该键的最终字典的值将是最后一个给定的值。”
  • @MarkRansom 是的,他们引用了错误的部分,但请阅读我引用的部分。无论如何,这一切都在dictionary displays一节中简洁地说明了

标签: python python-3.x dictionary


【解决方案1】:

元素的顺序会和你设置的一样,当然除非改变或排序,这不太可能在文档中,但是元素是写的一个接一个

【讨论】:

    猜你喜欢
    • 2021-12-21
    • 1970-01-01
    • 2022-01-13
    • 1970-01-01
    • 1970-01-01
    • 2023-01-04
    • 2011-08-06
    • 2015-07-04
    • 2014-08-16
    相关资源
    最近更新 更多