按频率排序而不是按字母顺序排序(在Python中)
我正在查看Python库中的一个示例,其中列表中某个单词的出现总数是按字典中的频率计数排序的:按频率排序而不是按字母顺序排序(在Python中),python,python-3.x,set,counter,Python,Python 3.x,Set,Counter,我正在查看Python库中的一个示例,其中列表中某个单词的出现总数是按字典中的频率计数排序的: cnt = Counter() for word in ['red', 'blue', 'red', 'green', 'blue', 'blue']: cnt[word] += 1 cnt的输出,其中元素按其频率计数的顺序列出: Counter({'blue': 3, 'red': 2, 'green': 1}) {'blue', 'green', 'red'} 我想做一个不包括数字频
cnt = Counter()
for word in ['red', 'blue', 'red', 'green', 'blue', 'blue']:
cnt[word] += 1
cnt
的输出,其中元素按其频率计数的顺序列出:
Counter({'blue': 3, 'red': 2, 'green': 1})
{'blue', 'green', 'red'}
我想做一个不包括数字频率的集合,但保留元素列出的顺序:
{'blue', 'red', 'green'}
然而,在我试图实现这一目标的过程中:
set(word for word, count in cnt.most_common(3))
我收到一个集合,其中元素按字母顺序排列,而不是按频率计数:
Counter({'blue': 3, 'red': 2, 'green': 1})
{'blue', 'green', 'red'}
是否可以根据频率计数对集合进行排序?集合是唯一元素的无序集合,因此对它们进行排序没有任何意义 您可能需要一个按顺序排列的列表。下面使用构造键的列表 我们可以迭代,它按顺序返回一个
(键,值)
元组序列
from collections import Counter
c = Counter({'blue': 3, 'red': 2, 'green': 1})
keys = [key for key, val in c.most_common()]
print(keys)
# ['blue', 'red', 'green']
集合是唯一元素的无序集合,因此对它们进行排序没有任何意义 您可能需要一个按顺序排列的列表。下面使用构造键的列表 我们可以迭代,它按顺序返回一个
(键,值)
元组序列
from collections import Counter
c = Counter({'blue': 3, 'red': 2, 'green': 1})
keys = [key for key, val in c.most_common()]
print(keys)
# ['blue', 'red', 'green']
一点也没有订购。如果你得到了字母顺序,那么下次你就不能指望它是字母顺序了。集合根本就没有顺序。如果你确实得到了字母顺序,那么下次你就不能指望它是字母顺序了。为什么要重新发明轮子呢
[w代表w,n在c.most_common()]
在我的脑海中,我以为most_common
由于某种原因默认情况下没有返回所有元素-\u-修复了,谢谢@tobias\u kWhy重新发明了轮子[w代表w,n在c.most_common()]
在我的脑海中,我以为most_common
由于某种原因,默认情况下没有返回所有元素-\u-无论如何都修复了,谢谢@tobias\u k