簡體   English   中英

如何在python中降序打印這個collections.defaultdict?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM