Используйте Counter.most_common()
метод , он отсортирует элементы для вас :
>>> from collections import Counter
>>> x = Counter({'a':5, 'b':3, 'c':7})
>>> x.most_common()
[('c', 7), ('a', 5), ('b', 3)]
Это будет сделано наиболее эффективным способом; если вы запрашиваете Top N вместо всех значений, heapq
вместо прямой сортировки используется a:
>>> x.most_common(1)
[('c', 7)]
Вне счетчиков сортировку всегда можно настроить в зависимости от key
функции; .sort()
и sorted()
оба принимают callable, который позволяет вам указать значение, по которому нужно отсортировать входную последовательность; 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 .
lamda i: -i[1]