Alp*_*ine 0 python counter set python-3.x
我在查看Python库中的一个示例,其中列表中单词出现的总数按字典中的频率计数排序:
cnt = Counter()
for word in ['red', 'blue', 'red', 'green', 'blue', 'blue']:
cnt[word] += 1
Run Code Online (Sandbox Code Playgroud)
cnt按频率计数顺序列出元素的输出:
Counter({'blue': 3, 'red': 2, 'green': 1})
Run Code Online (Sandbox Code Playgroud)
我想创建一个不包含数字频率的集合,但保留列出元素的顺序:
{'blue', 'red', 'green'}
Run Code Online (Sandbox Code Playgroud)
但是,在我尝试实现这一目标时:
set(word for word, count in cnt.most_common(3))
Run Code Online (Sandbox Code Playgroud)
我改为收到一个集合,其中元素按字母顺序排序而不是频率计数:
{'blue', 'green', 'red'}
Run Code Online (Sandbox Code Playgroud)
是否可以根据频率计数订购?
集合是唯一元素的无序集合,因此对它们进行排序没有任何意义.
您可能需要一个已订购的列表.以下使用列表推导来构造键列表.
我们可以迭代迭代Counter.most_common()按顺序返回一系列(key, value)元组.
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']
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
119 次 |
| 最近记录: |