【发布时间】:2018-07-29 10:01:04
【问题描述】:
我想在一个函数中对两个不同的变量求和,但我希望这些变量基于多个其他项求和。
如果我有以下 dicts x 列表:
x=[{'id':1, 'var1':'a', 'var2':'left', 'var3':0.1, 'var4':1},
{'id':2, 'var1':'a', 'var2':'right', 'var3':0.1, 'var4':1},
{'id':2, 'var1':'a', 'var2':'right', 'var3':0.2, 'var4':3},
{'id':4, 'var1':'b', 'var2':'left', 'var3':0.4, 'var4':4},
{'id':5, 'var1':'b', 'var2':'right', 'var3':0.1, 'var4':5},
{'id':5, 'var1':'b', 'var2':'right', 'var3':0.4, 'var4':2}]
然后我可以使用以下函数对单个变量 ('var3') 求和,基于其他两个变量('var1' 和 'var2'):
from operator import itemgetter
from itertools import groupby
def aggregate_var3_by_var1_and_var2(data):
my_data= []
grouper = itemgetter("id", "var1", "var2")
for key, grp in groupby(sorted(data, key = grouper), grouper):
temp_dict = dict(zip(["id", "var1", "var2"], key))
temp_dict["var3"] = sum(item["var3"] for item in grp)
my_data.append(temp_dict)
return my_data
my_output = aggregate_var3_by_var1_and_var2(x)
但是,我想对多个类别('var1' 和 'var2')的多个变量('var3' 和 'var4')求和,因此输出如下所示:
y=[{'id': 1, 'var1': 'a', 'var2': 'left', 'var3': 0.1, 'var4': 1},
{'id': 2, 'var1': 'a', 'var2': 'right', 'var3': 0.3, 'var4':4},
{'id': 4, 'var1': 'b', 'var2': 'left', 'var3': 0.4, 'var4':4},
{'id': 5, 'var1': 'b', 'var2': 'right', 'var3': 0.5, 'var4':7}]
如何使用这种方法一次对多个变量求和?
【问题讨论】:
标签: python list dictionary sum