假如有如下列表(省略号代表有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判断,列表索引。