Tut*_*uto 2 python sorting dictionary
需要计算不同值的数量出现在dict中books,并根据值反向输出的出现次数.
books = {
123457889: 'A',
252435234: 'A',
434234341: 'B',
534524365: 'C',
354546589: 'D',
146546547: 'D',
353464543: 'F',
586746547: 'E',
511546547: 'F',
546546647: 'F',
541146127: 'F',
246546127: 'A',
434545127: 'B',
533346127: 'E',
544446127: 'F',
546446127: 'G',
155654627: 'G',
546567627: 'G',
145452437: 'H',
}
Run Code Online (Sandbox Code Playgroud)
输出如下:
'F': 5,
'A': 3,
'G': 3,
'B': 2,
'D': 2,
'E': 2,
'C': 1,
'H': 1
Run Code Online (Sandbox Code Playgroud)
我尝试过这个:
import pprint
# to get the values from books
clist = [v for v in books.values()]
# values in books as keys in count,
count = {}
for c in clist:
count.setdefault(c, 0)
count[c] += 1
pprint.pprint(count)
Run Code Online (Sandbox Code Playgroud)
但是dict无法排序.
你的代码运行正常.使用馆藏模块中的计数器可以更轻松地完成此任务.只需传递books.values()给Counter:
from collections import Counter
counts = Counter(books.values())
print(counts)
Run Code Online (Sandbox Code Playgroud)
输出:
Counter({'F': 5, 'A': 3, 'G': 3, 'E': 2, 'D': 2, 'B': 2, 'H': 1, 'C': 1})
Run Code Online (Sandbox Code Playgroud)
要按值的顺序提供输出的布局,可以使用该most_common方法执行简单的迭代并打印每一行:
for char, value in counts.most_common():
print("'{}': {}".format(char, value))
Run Code Online (Sandbox Code Playgroud)
输出:
'F': 5
'G': 3
'A': 3
'E': 2
'D': 2
'B': 2
'C': 1
'H': 1
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
66 次 |
| 最近记录: |