Сортировка счетчика в python с помощью ключей

У меня есть счетчик, который выглядит примерно так:

Counter: {('A': 10), ('C':5), ('H':4)}

Я хочу сортировать по клавишам в алфавитном порядке, НЕ с помощью counter.most_common()

Есть ли способ достичь этого?

Ответ 1

Просто используйте sorted:

>>> from collections import Counter
>>> counter = Counter({'A': 10, 'C': 5, 'H': 7})
>>> counter.most_common()
[('A', 10), ('H', 7), ('C', 5)]
>>> sorted(counter.items())
[('A', 10), ('C', 5), ('H', 7)]

Ответ 2

>>> from operator import itemgetter
>>> from collections import Counter
>>> c = Counter({'A': 10, 'C':5, 'H':4})
>>> sorted(c.items(), key=itemgetter(0))
[('A', 10), ('C', 5), ('H', 4)]

Ответ 3

В Python 3 вы можете использовать функцию most_common коллекций .Counter:

x = ['a', 'b', 'c', 'c', 'c', 'd', 'd']
counts = collections.Counter(x)
counts.most_common(len(counts))

Здесь используется функция most_common, доступная в коллекциях .Counter, которая позволяет вам находить ключи и количество n наиболее распространенных ключей.

Ответ 4

Чтобы получить значения в виде списка в отсортированном порядке

array              = [1, 2, 3, 4, 5]
counter            = collections.Counter(array)
sorted_occurrences = list(dict(sorted(counter.items())).values())

Ответ 5

sorted(counter.items(),key = lambda i: i[0])

например:

arr = [2,3,1,3,2,4,6,7,9,2,19]
c = collections.Counter(arr)
sorted(c.items(),key = lambda i: i[0])

внешний:   [(1, 1), (2, 3), (3, 2), (4, 1), (6, 1), (7, 1), (9, 1), (19, 1)] если вы хотите получить формат словаря, просто

dict(sorted(c.items(),key = lambda i: i[0]))