二维列表,如果某关键字段一直,则求和

假如有如下列表(省略号代表有N行N列,即行数不定,每行列数相同):

[
['a',1,2,3,4,5,.......],
['b',1,2,3,4,5,.......],
['c',1,1,1,1,1,.......],
['a',1,1,1,1,1,.......],
['c',0,1,0,0,0,.......]
[........]
]

怎么样在不引入其他库的情况下,求得以下结果,即如果每行第一列‘字符串’相同,则求和:

[
['a',2,3,4,5,6,.....],
['b',1,2,3,4,5,.....],
['c',1,2,1,1,1,.....],
]


def func(data):
    d = {}
    col = len(data[0])
    for i, j in enumerate(data):
        if j[0] in d:
            d[j[0]].append(i)
        else:
            d[j[0]] = [i]

    ret = []
    for key in d:
        temp = col * [0]
        temp[0] = key
        for i in d[key]:
            for j in range(1, col):
                temp[j] = temp[j] + data[i][j]
        ret.append(temp)
    return ret


data = [['a', 1, 2, 3, 4, 5], ['b', 1, 2, 3, 4, 5], ['c', 1, 1, 1, 1, 1],
        ['a', 1, 1, 1, 1, 1], ['c', 0, 1, 0, 0, 0]]
ret = func(data)
print(ret)

那你提取第一列判断是不是相等,是相等就求和。if判断,列表索引。

img


读取第二列到最后一列的数字相加。a[1:]。