python - 排序/格式化计数器输出
问题描述
我正在尝试按值大小对 Counter 的输出进行排序。当前代码以看似随机的顺序输出它们
from collections import Counter
query_list = list()
for line in contents:
if not line.startswith("#"):
columns = line.split()
query = str(columns[9])
query_list.append(query)
queries = Counter(query_list)
for key, value in queries.items():
print(value,key)
当前输出如下所示:
36 key_a
24 key_b
18 key_c
97 key_d
99 key_f
理想情况下,输出将按从大到小排序,如下所示:
99 key_f
97 key_d
36 key_a
24 key_b
18 key_c
正如您所料,使用sorted
会产生类型错误
---> 12 print(sorted(value,key))
13
14
TypeError: sorted expected 1 arguments, got 2
解决方案
您可以使用(doc)most_common()
的方法:Counter
from collections import Counter
values = {'key_a': 36,
'key_b': 24,
'key_c': 18,
'key_d': 97,
'key_f': 99}
c = Counter(values)
for key, count in c.most_common():
print(count, key)
印刷:
99 key_f
97 key_d
36 key_a
24 key_b
18 key_c
编辑:如果你想使用sorted()
:
from operator import itemgetter
for key, count in sorted(c.items(), key=itemgetter(1), reverse=True):
print(count, key)
推荐阅读
- wordpress - 按价格过滤,更改按钮标签
- reactjs - React:嵌套组件之间的通信
- reactjs - 为什么分页不起作用?以及如何解决?
- java - 是否可以在不重新启动应用程序的情况下重新加载 WebSphere Application Server (WAS) 中的共享库?
- docker-compose - docker-compose up 返回 OSError: Can not read file in context: .../data/mmaps/5332641.mmtile
- javascript - Array.map() 运行两次
- html - 我可以将表单集输入的高度与按钮匹配吗?
- java - Dyanmo 中的 AWS 导致 ConditionalCheckFailedException 的原因?
- elasticsearch - {"type":"mapper_parsing_exception","reason":"解析字段失败 [user_agent.version]
- sql - 无法计算中位数 - SQL Server 2017