Sort Counter by frequency, then alphabetically in Python

后端 未结 4 1999
日久生厌
日久生厌 2020-12-17 02:25

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 dicti

4条回答
  •  攒了一身酷
    2020-12-17 03:26

    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.

提交回复
热议问题