用不同的键汇总字典列表

我有一个字典列表,具有不同的键和值,我想对值进行汇总,字典的结构如下:

结构:

for dic in doc_complete_views:
    for val in dic.values():
        print(val)  

产量:

{'Algorithmic_bias': 4462}
{'Algorithmic_bias': 2391}
{'Algorithmic_bias': None}
{'Algorithmic_bias': 3167}
{'Algorithmic_efficiency': 7172}
{'Algorithmic_efficiency': 6271}
{'Algorithmic_efficiency': 8612}
{'Algorithmic_efficiency': 8277}
{'Algorithmic_efficiency': 6467}
{'Algorithmic_efficiency': 7070}

预期输出:

{'Algorithmic_bias': 10020}
{'Algorithmic_efficiency': 43869}

使用的代码:

count={}
final_count = {}
for index in range(len(doc_complete_views)):
    for a,b in doc_complete_views[index].items():
        for i,j in b.items():
                try:
                    count[i] += j 
                except KeyError:
                    count[i] = j
    final_count[index] = count                  

# print the final array
print(final_count)

问题:

上述代码由于值无而失败

问题:

当我遍历字典列表(打印结构的地方)时,是否有一种方法可以对这些值求和而忽略None?

词典列表的结构:

defaultdict(<class 'dict'>,{datetime.datetime(2018,11,1,0): {'Algorithmic_bias': 3306},datetime.datetime(2017,7,0): {'Algorithmic_bias': None},5,0): {'Algorithmic_bias': 1843},datetime.datetime(2019,0): {'Algorithmic_bias': 3237},2,datetime.datetime(2018,8,0): {'Algorithmic_bias': 2837},3,0): {'Algorithmic_bias': 1950},0): {'Algorithmic_bias': 3816},
a20855737 回答:用不同的键汇总字典列表

具有collections.defaultdict和简单的if条件:

from collections import defaultdict

# doc_complete_views = ...
res = defaultdict(int)

for d in doc_complete_views:
    for sub_d in d.values():
        for k,v in sub_d.items():
            if v is not None:
                res[k] += v

final_lst = [{k:v} for k,v in res.items()]
print(final_lst)

输出:

[{'Algorithmic_bias': 10020},{'Algorithmic_efficiency': 43869}]
本文链接:https://www.f2er.com/3131682.html

大家都在问