按字母顺序对 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]))
按字母顺序对每个计数中的元素进行排序,明确编码元素的字典顺序作为决胜局。
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. Ifn
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]))
按字母顺序对每个计数中的元素进行排序,明确编码元素的字典顺序作为决胜局。