Python 2.7 使用聚合值将x个python字典合并为1

Python 2.7 使用聚合值将x个python字典合并为1,python-2.7,Python 2.7,我有一个具有相同键名的词典列表,我想将这些词典合并到一个词典中,平均值仅为基于数字的值: [{'a': 3, 'b': 'm', 'c': 7}, {'a': 1.0, 'b': 'm', 'c': 2}, {'a': 5, 'b': 'm', 'c': 4.0}] 进入字典: [{'a': 3, 'b': 'm', 'c': 4}] 如果您可以假设列表中至少有一个dict,并且所有dict都有您可以执行的所有键: import numbers dicts =[{'a': 3, 'b':

我有一个具有相同键名的词典列表,我想将这些词典合并到一个词典中,平均值仅为基于数字的值:

[{'a': 3, 'b': 'm', 'c': 7}, 
{'a': 1.0, 'b': 'm', 'c': 2}, 
{'a': 5, 'b': 'm', 'c': 4.0}]
进入字典:

[{'a': 3, 'b': 'm', 'c': 4}]

如果您可以假设列表中至少有一个dict,并且所有dict都有您可以执行的所有键:

import numbers
dicts =[{'a': 3, 'b': 'm', 'c': 7},
{'a': 1.0, 'b': 'm', 'c': 2},
{'a': 5, 'b': 'm', 'c': 4.0}]

avg_dict = {}
for key in dicts[0]:
        avg_dict[key] = sum([d[key] for d in dicts])/len(dicts) if isinstance(dicts[0][key], numbers.Number) else dicts[0][key]

也许不是最具蟒蛇风格的方式,但它会起到作用:

lst = [{'a': 3, 'b': 'm', 'c': 7}, 
       {'a': 1.0, 'b': 'm', 'c': 2}, 
       {'a': 5, 'b': 'm', 'c': 4.0}]

result = {}

for item in lst:
    for j in item:
        if type(item[j]) == str:
            result[j] = item[j]
        elif j in result:
            result[j] += item[j]
        else:
            result[j] = item[j]

for i in result:
    if type(result[i]) != str:
        result[i] = int(result[i] / len(lst))

print(result)

那太好了,工作很愉快。谢谢你的回复。