Sort Counter by frequency, then alphabetically in Python

Viewed 12021

I am trying to use counter to sort letters by occurrence, and put any that have the same frequency into alphabetical order, but I can't get access to the Value of the dictionary that it produces.

letter_count = collections.Counter("alphabet")
print(letter_count)

produces:

Counter({'a': 2, 'l': 1, 't': 1, 'p': 1, 'h': 1, 'e': 1, 'b': 1})

How can I get it ordered by frequency, then by alphabetical order, so everything that shows up only once is in alphabetical order?

4 Answers

You can sort the input before passing it to the counter.

>>> Counter(sorted("alphabet")).most_common()
[('a', 2), ('b', 1), ('e', 1), ('h', 1), ('l', 1), ('p', 1), ('t', 1)]
Related