在嵌套的字典中找到所有与值相匹配的键,并创建一个以值为键的新字典。

我有以下字典(显然大得多)。

{
'file1': {'parameter1': value,
          'parameter2': value}

'file2': {'parameter1': value,
          'parameter2': value}                          
}

我需要把它变成:

{
'parameter1': {value1 : [list of all matching files], 
               value2 : [list of all matching files]}

'paramemer2': {value1 : [list of all matching files],
               value2 : [list of all matching files]}
}

文件和值的数量是任意的,参数的数量是固定的,相对较少。

我还算能做,但需要很多中间步骤,生成所有参数值的集合等等。有没有一种快速的pythonic方法来反转它?也许我应该使用不同的数据结构?

解决方案:

你可以使用 collections.defaultdict:

from collections import defaultdict

data = {
    'file1': {'parameter1': 'value1',
              'parameter2': 'value2'},
    'file2': {'parameter1': 'value1',
              'parameter2': 'value3'}                          
}

dd = defaultdict(lambda: defaultdict(list))
for file, pv_dict in data.items():
    for para, value in pv_dict.items():
        dd[para][value].append(file)

print(dd)
# defaultdict(<function <lambda> at 0x7fb4d89c3c80>, 
#     {
#         'parameter1': defaultdict(<class 'list'>, {'value1': ['file1', 'file2']}), 
#         'parameter2': defaultdict(<class 'list'>, {'value2': ['file1'],
#                                                    'value3': ['file2']}), 
#     }
# )

给TA打赏
共{{data.count}}人
人已打赏
未分类

布局下一步会显示[ 没有可用的资源]

2022-9-9 6:14:24

未分类

如何在groupBox控件之间添加间隙?

2022-9-9 6:14:26

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索