How to get 3 maximum values in a neset defaultdict in python?

问题描述 投票:0回答:1

我有一个像这样的嵌套 defaultdict:

defaultdict(<function __main__.<lambda>()>,
           {'A': defaultdict(<function __main__.<lambda>()>,
                 {'a':2,
                  'b':1,
                  'd':2,
                  'f':1}
            'B': defaultdict(<function __main__.<lambda>()>,
                 {'a':3,
                  'c':4,
                  'e':1}}

我想得到这样的输出:

B,c : 4
B,a : 3
A,a : 2

如何对这样的嵌套 defaultdict 进行排序?

提前感谢您的帮助。

python sorting max defaultdict
1个回答
0
投票

如何将默认字典展平为计数器,然后调用

Counter.most_common

>>> from collections import Counter, defaultdict
>>> my_dict = defaultdict({...}) 
>>> flattened = {f'{K},{k}':v for K, d in my_dict.items() for k, v in d.items()}
>>> Counter(flattened).most_common(3)
[('B,c', 4), ('B,a', 3), ('A,a', 2)]
© www.soinside.com 2019 - 2024. All rights reserved.