如何按值对Counter排序?-python
除了执行反向列表理解的列表理解之外,还有一种Python方式可以按值对Counter进行排序吗?如果是这样,它比这更快:
>>> from collections import Counter>>> x = Counter({'a':5, 'b':3, 'c':7})
>>> sorted(x)
['a', 'b', 'c']
>>> sorted(x.items())
[('a', 5), ('b', 3), ('c', 7)]
>>> [(l,k) for k,l in sorted([(j,i) for i,j in x.items()])]
[('b', 3), ('a', 5), ('c', 7)]
>>> [(l,k) for k,l in sorted([(j,i) for i,j in x.items()], reverse=True)]
[('c', 7), ('a', 5), ('b', 3)
回答:
使用Counter.most_common()
方法,它将
为您 排序项目:
>>> from collections import Counter>>> x = Counter({'a':5, 'b':3, 'c':7})
>>> x.most_common()
[('c', 7), ('a', 5), ('b', 3)]
它将以最有效的方式进行;如果您要求前N个而不是所有值,heapq
则使用a代替直接排序:
>>> x.most_common(1)[('c', 7)]
在计数器之外,可以始终根据key
功能调整排序;.sort()
并sorted()
都接受赎回,让您指定要排序的输入序列的值; sorted(x,
key=x.get, reverse=True)将为您提供与相同的排序x.most_common()
,但仅返回键,例如:
>>> sorted(x, key=x.get, reverse=True)['c', 'a', 'b']
或者您可以仅对给定的值(key, value)
对进行排序:
>>> sorted(x.items(), key=lambda pair: pair[1], reverse=True)[('c', 7), ('a', 5), ('b', 3)]
有关更多信息,请参见Python排序方法。
以上是 如何按值对Counter排序?-python 的全部内容, 来源链接: utcz.com/qa/418552.html