[英]How to print this collections.defaultdict in descending order in python?
我正在計算 csv 文件中地址的頻率,然后打印地址和計數。 csv 文件包含很多字段,所以我只選擇我需要的字段。
不幸的是,打印是無序的。 如何按降序打印?
下面是簡化的代碼。 我也在使用一組(所有者),但我刪除了與之相關的代碼以使問題簡單化。
import csv
import collections
multiOwner = collections.defaultdict(lambda: {'freq': 0, 'owners': set()})
with open('input.csv', newline="") as csv_file:
csv_reader = csv.reader(csv_file, delimiter=',')
for folio,owner1,owner2,address, *rest in csv_reader:
multiOwner[address]['freq'] += 1
for address in multiOwner:
print (address,multiOwner[address]['freq'])
您可能想要使用SortedContainers
庫中的SortedDict
。 它易於使用,用純 Python 編寫,而且效率驚人。 但是我認為他們不提供SortedDefaultDict
。
否則,您可以提取鍵的排序列表並遍歷該列表:
keys=sorted(list(multiOwner.keys()), key=lambda x:multiOwner[x]['freq'], reverse=True)
for k in keys:
print(k, multiOwner[k]['freq'])
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.