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]))
要按字母顺序重新排列每个计数中的元素,请将元素的字典顺序显式编码为仲裁。