我有一个已按出现次数排序的计数器.
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)
当您以特定顺序在字典中输入值时,字典不保留任何顺序。 .keys()字典上的返回顺序没有特定的顺序。有一个OrderedDict可以保留顺序的,但我不知道它如何与相互作用Counter。
编辑:
您可能要使用Counter.most_common()。这将返回记录其名单将在顺序。
| 归档时间: |
|
| 查看次数: |
28162 次 |
| 最近记录: |