OrderedDict(Counter(s))会始终给出有序的字典吗?

问题描述 投票:1回答:1

我有如下代码,我想获得插入键的顺序

from collections import Counter, OrderedDict
s = 'abcdabcd'
d = OrderedDict(Counter(s))
print(d)

输出:OrderedDict([('a', 2), ('b', 2), ('c', 2), ('d', 2)])

这是正确的方法,每次运行代码,我们都能获得相同的订单吗?

python python-3.x counter ordereddictionary
1个回答
1
投票

是的,如果您反复运行代码,它将产生相同的顺序如果您使用Python 3.6或更高版本,则要使用该代码。

这是因为遍历Counter()对象将始终为您提供插入顺序的项目,而该顺序由输入确定。如果s输入不变,则OrderedDict(Counter(s))的输出也不变。

注意,这是键的插入顺序,而不是Counter.most_common()产生的顺序;它们不会以任何方式排序。由于从Python 3.6开始,字典的Python实现已更改为使用更少的内存,因此它保持稳定,这反过来又会影响插入顺序的记录。

((注:我在初稿上弄错了,在验证后我调整了此答案)。

© www.soinside.com 2019 - 2024. All rights reserved.