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?
It sounds like your question is how to sort the entire list by frequency, then break ties alphabetically. You can sort the entire list like this:
>>> a = sorted(letter_count.items(), key=lambda item: (-item[1], item[0]))
>>> print(a)
# [('a', 2), ('b', 1), ('e', 1), ('h', 1), ('l', 1), ('p', 1), ('t', 1)]
If you want the output to be a dict still, you can convert it into a collections.OrderedDict
:
>>> collections.OrderedDict(a)
# OrderedDict([('a', 2),
# ('b', 1),
# ('e', 1),
# ('h', 1),
# ('l', 1),
# ('p', 1),
# ('t', 1)])
This preserves the ordering, as you can see. 'a'
is first because it's most frequent. Everything else is sorted alphabetically.