【发布时间】: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