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)
那太好了,工作很愉快。谢谢你的回复。