如何按值对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

回到顶部