我试图使用计数器按出现的顺序对字母进行排序,然后将具有相同频率的任何字母按字母顺序排列,但是我无法访问它产生的字典的Value。
letter_count = collections.Counter("alphabet") print(letter_count)
产生:
Counter({'a': 2, 'l': 1, 't': 1, 'p': 1, 'h': 1, 'e': 1, 'b': 1})
如何才能按频率,然后按字母顺序对其进行排序,因此仅显示一次的所有内容都按字母顺序进行?
听起来您的问题是如何按频率对整个列表进行排序,然后按字母顺序打破平局。您可以像这样对 整个列表 进行排序:
>>> 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)]
如果您希望输出仍然是字典,则可以将其转换为collections.OrderedDict:
collections.OrderedDict
>>> collections.OrderedDict(a) # OrderedDict([('a', 2), # ('b', 1), # ('e', 1), # ('h', 1), # ('l', 1), # ('p', 1), # ('t', 1)])
如您所见,这将保留顺序。'a'首先是因为它最频繁。其他所有内容均按字母顺序排序。
'a'