python列表分组合并求和问题

python列表分组合并求和问题

在下工作中遇到如下问题,我有一个大的列表

lista = [

["a", "b", "c", 1],

["a", "b", "c", 2],

["d", "e", "f", 1],

["a", "c", "c", 2],

...

]

要合并以上列表, 前三项相同的列表进行合并,第四项相加,想要得到如下结果

lista = [

["a", "b", "c", 3],

["d", "e", "f", 1],

["a", "c", "c", 2],

...

]

可以覆盖原先lista,也可以不覆盖,生成大的listb列表也行,请问有大佬帮小弟指点下思路么


回答:

python">from typing import DefaultDict

lista=[

[1,2,3,1],

[1,2,3,2],

[1,3,2,1],

]

result=DefaultDict(int)

for k,v in zip(map(lambda i: tuple(i[:3]), lista),map(lambda i: i[3], lista)):

result.update({k:result[k]+v})

print(result)

最终结果

defaultdict(<class 'int'>, {(1, 2, 3): 3, (1, 3, 2): 1})

转成你要的 lista 这种格式就好了。

PS:编辑器补全了一个错误的defaultdict我懒得改了。


回答:

pandas实现:

import pandas as pd

df=pd.DataFrame(lista,columns=["c1","c2","c3","v"])

listb=df.groupby(["c1","c2","c3"]).sum().reset_index().to_numpy().tolist()

以上是 python列表分组合并求和问题 的全部内容, 来源链接: utcz.com/p/938000.html

回到顶部