Use o Counter.most_common()
método , ele classificará os itens para você :
>>> from collections import Counter
>>> x = Counter({'a':5, 'b':3, 'c':7})
>>> x.most_common()
[('c', 7), ('a', 5), ('b', 3)]
Isso será feito da maneira mais eficiente possível; se você pedir um N superior em vez de todos os valores, a heapq
será usado em vez de uma classificação direta:
>>> x.most_common(1)
[('c', 7)]
Fora dos contadores, a classificação sempre pode ser ajustada com base em uma key
função; .sort()
e sorted()
ambos recebem chamadas que permitem especificar um valor no qual classificar a sequência de entrada; sorted(x, key=x.get, reverse=True)
daria a você a mesma classificação que x.most_common()
, mas retornará apenas as chaves, por exemplo:
>>> sorted(x, key=x.get, reverse=True)
['c', 'a', 'b']
ou você pode classificar apenas os (key, value)
pares de valores fornecidos :
>>> sorted(x.items(), key=lambda pair: pair[1], reverse=True)
[('c', 7), ('a', 5), ('b', 3)]
Veja o tutorial de classificação do Python para obter mais informações.
lamda i: -i[1]