Python列表中小列表的累加如何实现?

输入列表 = [[北京,海淀,2000],[北京,海淀,1000],[北京,丰台,2000],[武汉,汉阳,1000],,[武汉,汉阳,4000]]

输出列表= [[北京,海淀,3000],[北京,丰台,2000],[武汉,汉阳,5000]]

感谢!


a =  [['北京','海淀', 2000],['北京','海淀',1000],['北京','丰台',2000],['武汉','汉阳',1000],['武汉','汉阳',4000]]
d = {}
for i in a:
    if f'{i[0]}_{i[1]}' in d.keys():
        d[f'{i[0]}_{i[1]}'] += i[2]
    else:
        d[f'{i[0]}_{i[1]}'] = i[2]
print(d)
r = []
for k, v in d.items():
    r.append([k.split('_')[0], k.split('_')[1], v])
print(r)

img

你题目的解答代码如下:

li =  [['北京','海淀', 2000],['北京','海淀',1000],['北京','丰台',2000],['武汉','汉阳',1000],['武汉','汉阳',4000]]
d = {}
for v in li:
    t = tuple(v[:2])
    if t in d:
        d[t][2] += v[2]
    else:
        d[t] = v
li2 = list(d.values())
print(li2)

img

如有帮助,请点击我的回答下方的【采纳该答案】按钮帮忙采纳下,谢谢!

img

遍历输入列表,以 前两个值为key 第三个值为value 存在map中。 key相同 value相加

inputlist=[["北京","海淀",2000],["北京","海淀",1000],["北京","丰台",2000],["武汉","汉阳",1000],["武汉","汉阳",4000]]
tempkey={}
outlist=[]
for i in inputlist:
    if str(i[:2]) in tempkey:
        tempkey[str(i[:2])][2]+=i[2]
    else:
        tempkey[str(i[:2])]=i

outlist=list(tempkey.values())
print(outlist)

img


有帮助请点一下右上角的采纳,谢谢

俺选择用pandas

a =  [['北京','海淀', 2000],['北京','海淀',1000],['北京','丰台',2000],['武汉','汉阳',1000],['武汉','汉阳',4000]]
ls=pd.DataFrame(a).groupby([0,1]).sum().reset_index().to_numpy().tolist()
print(ls)
您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!
PS:问答VIP年卡 【限时加赠:IT技术图书免费领】,了解详情>>> https://vip.csdn.net/askvip?utm_source=1146287632