【发布时间】:2020-07-13 06:02:34
【问题描述】:
我有一个如下所示的嵌套列表,我正在尝试将与第 2 列中的相同值相关的第 1 列的值相加,并添加 一个带有总和的新子列表和另一个带有“Total”的子列表。
a = [
['45', '00128'],
['88', '00128'],
['87', '00128'],
['50', '88292'],
['69', '88292'],
['70', '72415'],
['93', '72415'],
['79', '72415']
]
我当前的代码如下所示,我想这将在列表a 上运行某些内容,但不会更改a 中的任何内容。
for sl in a:
x = sl[1]; c0=0
if (sl[1] == x):
c0 = c0 + int(sl[0])
else:
a.insert(a.index(sl)+1,[c0,''])
a.insert(a.index(sl)+2,['Total',''])
我要找的输出是这样的:
b = [
['45', '00128'],
['88', '00128'],
['87', '00128'],
['220', ''], # This is 45 + 88 + 87
['Total', ''],
['50', '88292'],
['69', '88292'],
['119', ''], # This is 50 + 69
['Total', ''],
['70', '72415'],
['93', '72415'],
['79', '72415'],
['242', ''], # This is 70 + 93 + 79
['Total', '']
]
如何做到这一点?谢谢
更新
输入列表有 4 列,如左侧一列,需要对 col1、col3 和 col4 求和才能得到右侧的一列。
a = [ >> b = [
['45', '00128', '2','4'], >> ['45', '00128', '2', '4' ],
['88', '00128', '1','3'], >> ['88', '00128', '1', '3' ],
['87', '00128', '4','0'], >> ['87', '00128', '4', '0' ],
['50', '88292', '1','1'], >> ['220', '' , '7', '7' ],
['69', '88292', '9','5'], >> ['Total', '', 'Total', 'Total'],
['70', '72415', '8','9'], >> ['50', '88292', '1', '1' ],
['93', '72415', '3','2'], >> ['69', '88292', '9', '5' ],
['79', '72415', '5','7'] >> ['119', '', '10', '6' ],
] >> ['Total', '', 'Total', 'Total'],
>> ['70', '72415', '8', '9' ],
>> ['93', '72415', '3', '2' ],
>> ['79', '72415', '5', '7' ],
>> ['242', '', '16', '18' ],
>> ['Total', '', 'Total', 'Total'],
>> ]
【问题讨论】: