【发布时间】:2016-03-24 04:19:09
【问题描述】:
当我运行它时
import itertools
bar = itertools.count(1).next
print {'a': bar(), 'b': bar(), 'c': bar()}
在 CPython 上,我得到 {'a': 0, 'b': 1, 'c': 2}。这在实施和/或任何地方都有记录吗? a、b 和 c 是否会被乱序赋值?
【问题讨论】:
-
我不这么认为。考虑到字典键首先不能保证按任何顺序排列,我认为您不能保证解释器构建字典文字的其他内容。不过,这是一个有趣的问题。不,显然 Python 文档下面的一些答案确实对此做出了规定,尽管这很好。 -
我不确定它是否总是适合你。也许如果你像在你的例子中那样内联初始化它,它就可以工作。我很确定,如果您创建一个新的 dict 并以相同的顺序分配值,它将不会被保留
标签: python dictionary