如果嵌套列表(列表列表)中的第n个元素相同,则Python求和

2024-09-24 22:17:20 发布

您现在位置:Python中文网/ 问答频道 /正文

如果嵌套列表(列表列表)中的第n个元素相同,则Python求和

my_list1=[['John',2,'goals',4],['Robert',5,'hike',3],['Julia',6,'paid',2],['John',4,'fine',6],['Robert',3,'loop',44],['Julia',1,'cool',33],['Kris',6,'wild',4],['Kris',8,'word',67]]

结果

my_list1=[['John',2,'goals',4],['Robert',5,'hike',3],['Julia',6,'paid',2],['John',4,'fine',6],['Robert',3,'loop',44],['Julia',1,'cool',33],['Kris',6,'wild',4],['Kris',8,'word',67]]
result = {}
for i in my_list1:
    name = i[0]
    if name in result:
        result[name][1] += i[1]
        result[name][2] += i[3]
    else:
        result[name] = [name, i[1], i[3]]
my_list2=[]
[my_list2.extend([v]) for k,v in result.items()]
print (my_list2)

或者

import pandas as pd
x =[['John',2,'goals',4],['Robert',5,'hike',3],['Julia',6,'paid',2],['John',4,'fine',6],['Robert',3,'loop',44],['Julia',1,'cool',33],['Kris',6,'wild',4],['Kris',8,'word',67]]
df = pd.DataFrame(x)
xx = (df.groupby(0).sum().reset_index().as_matrix())
s=[]
for i in xx:
    for j in i:
        s.append(j)
new = []
for i in range(0, len(s), 3):
    new.append(s[i:i+3])
print(new)

谢谢


Tags: namein列表formyresultjohnrobert
1条回答
网友
1楼 · 发布于 2024-09-24 22:17:20

创建一个字典,其中键是名称,值是和的列表。你知道吗

result = {}
for i in my_list1:
    name = i[0]
    if name in result:
        result[name][1] += i[1]
        result[name][2] += i[3]
    else:
        result[name] = [name, i[1], i[3]]
my_list2 = result.values()

相关问题 更多 >