我有一个这样的计数器:
counter = Counter(['a','a','b','b','b','c'])
给出了这个对象:
Counter({'b': 3, 'a': 2, 'c': 1})
从中我想创建一个列表,如:
list[0] = 'b'
list[1] = 'a'
list[2] = 'c'
任何想法都可以做到最简单,最快捷的方式吗?感谢
答案 0 :(得分:4)
你可以使用collections.Counter.most_common
(它返回n个最常见元素的列表及其从最常见到最少的计数):
>>> counter.most_common()
[('b', 3), ('a', 2), ('c', 1)]
>>> [key for key, _ in counter.most_common()]
['b', 'a', 'c']
答案 1 :(得分:2)
最简单的(IMO)方法,如falsetru所述
sorted(counter, key=counter.get, reverse=True)
以上内容会根据键(dict
)&的值来对计数器.get()
进行排序。返回一个反转的list
。
答案 2 :(得分:0)
您可以将其转换为列表,但由于字典未排序,因此无法保留您想要的顺序:
list1 = list(counter)
答案 3 :(得分:0)
如果您想跳过可以输入的步骤。
list(set(['a','a','b','b','b','c']))
答案 4 :(得分:0)
你可以这样做:
from collections import Counter
import operator
counter = Counter(['a','a','b','b','b','c'])
print [k for k,v in sorted(counter.iteritems(), key=operator.itemgetter(1), reverse=True)]
# ['b', 'a', 'c']
或者,更好的是:
from collections import Counter
counter = Counter(['a','a','b','b','b','c'])
print [k for k,v in counter.most_common()]