对集合的输出进行排序.计数器().most_common() 按字母顺序排列



collections.Counter().most_common()将返回条目及其计数值,从最到最小。

我假设对于这些具有相同计数值的条目,这些条目按字母顺序返回。但是,我发现情况并非如此。例如:

a =  ["i","i","love","love","leetcode","coding"]
b = Counter(a)
print(b.most_common())

这就是我得到的:

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

"leetcode""coding"不按字母顺序返回。

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

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

.most_common()状态的文档(强调我的):

返回n最常见元素及其计数(从最常见到最少)的列表。如果省略n或 None,则most_common()返回计数器中的所有元素。计数相等的元素按首次遇到的顺序排序。

因此,您应该使用:

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

要按字母顺序重新排列每个计数中的元素,请将元素的字典顺序显式编码为仲裁。

最新更新