Python 与列表相反

Python 与列表相反,python,list,counter,Python,List,Counter,我有一个这样的柜台: counter = Counter(['a','a','b','b','b','c']) 这就给了这个对象: Counter({'b': 3, 'a': 2, 'c': 1}) 我想从中创建一个列表,例如: list[0] = 'b' list[1] = 'a' list[2] = 'c' 有什么想法可以用最简单最快的方式来做吗?感谢falsetru告诉我们的最简单(IMO)方法 sorted(counter, key=counter.get, reverse=Tru

我有一个这样的柜台:

counter = Counter(['a','a','b','b','b','c'])
这就给了这个对象:

Counter({'b': 3, 'a': 2, 'c': 1})
我想从中创建一个列表,例如:

list[0] = 'b'
list[1] = 'a'
list[2] = 'c'
有什么想法可以用最简单最快的方式来做吗?感谢falsetru告诉我们的最简单(IMO)方法

sorted(counter, key=counter.get, reverse=True)

上面的操作将根据键的值(
.get()
)对计数器进行排序
dict
),并返回一个反向的
列表

,您可以将其强制转换为列表,但它不会保持您想要的顺序,因为字典是未排序的:

list1 = list(counter)
您可以使用(返回n个最常见元素的列表及其从最常见到最少的计数):


如果要跳过这些步骤,可以键入

list(set(['a','a','b','b','b','c']))
您可以这样做:

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()]

列表元素的顺序是什么?你试过什么?谢谢Ashish,这就是我要找的,除了你的代码给了我升序,我能做些什么才能得到降序呢?或者,你可以做
reversed(sorted(counter.keys(),key=lambda x:counter[x])
可以缩短为
sorted(counter,key=counter.get,reverse=True)
排序
接收任何iterable。(迭代字典产生键)@falsetru谢谢,不知道
。get()
可以这样使用。我没说它是最快的。这不是最短的一个。;)
from collections import Counter

counter = Counter(['a','a','b','b','b','c'])
print [k for k,v in counter.most_common()]