按字母顺序对 collections.Counter().most_common() 的输出进行排序

Sorting output from collections.Counter().most_common() in alphabetical order

collections.Counter().most_common() 将 return 个条目及其计数值从多到少。

我假设这些条目具有相同的计数值,这些条目按字母顺序 returned。然而,我发现事实并非如此。例如:

a =  ["i","i","love","love","leetcode","coding"]

b = Counter(a)

print(b.most_common())

这是我得到的:

[('i', 2), ('love', 2), ('leetcode', 1), ('coding', 1)]

"leetcode""coding" 未 return 按字母顺序排列。

如果两个单词的计数相同,如何按字母顺序从最常见到最不常见排序?

.most_common() 将按频率降序对元素进行排序,并根据元素首次出现在列表中的时间进行平局。

.most_common() 的文档指出(强调我的):

Return a list of the n most common elements and their counts from the most common to the least. If n is omitted or None, most_common() returns all elements in the counter. Elements with equal counts are ordered in the order first encountered.

所以,你应该使用:

sorted(b.most_common(), key=lambda x: (x[1], x[0]))

按字母顺序对每个计数中的元素进行排序,明确编码元素的字典顺序作为决胜局。