Python Counter keys()返回值

use*_*486 7 python counter

我有一个已按出现次数排序的计数器.

counterlist = Counter({'they': 203, 'would': 138, 'your': 134,...}).
Run Code Online (Sandbox Code Playgroud)

但是当我这样做时counterlist.keys(),返回列表是:

['wirespe', 'four', 'accus',...]
Run Code Online (Sandbox Code Playgroud)

代替

['they', 'would', 'your',...].
Run Code Online (Sandbox Code Playgroud)

为什么?

Sir*_*lot 17

Counter()

Counter是用于计算可哈希对象的dict子类.它是一个无序集合,其中元素存储为字典键,其计数存储为字典值.

是一个无序的字典,所以它不保持你将它们添加到字典中的顺序.如果你想保持它们的顺序,你需要使用OrderedDict()

如果你想要一个OrderedCounter()那么你可以做到这一点,我从这里拉出来,解释为什么它的工作原理.

from collections import *

class OrderedCounter(Counter, OrderedDict):
    pass

counterlist = OrderedCounter({'would': 203, 'they': 138, 'your': 134})

print counterlist.keys()
Run Code Online (Sandbox Code Playgroud)

  • Python 3.6 及更高版本有 dict 顺序。这是一个很好的回复,详细说明了这一点。/sf/answers/2798652111/ (2认同)

Tim*_*all 5

当您以特定顺序在字典中输入值时,字典不保留任何顺序。 .keys()字典上的返回顺序没有特定的顺序。有一个OrderedDict可以保留顺序的,但我不知道它如何与相互作用Counter

编辑:

您可能要使用Counter.most_common()。这将返回记录其名单在顺序。