如何把两个数组,把重复的vacation_days相加显示,不同的添加进列表

本文介绍了两种方法处理两个包含字典的列表:一种是先筛选重复项并累加,另一种是利用索引合并并保持唯一元素。展示了如何高效地合并并去除重复项,同时更新重复元素的vacation_days值。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

题目:两个数组,把重复的把vacation_days相加显示,不同的添加进列表
list_a=[{‘name’: ‘刘宴希’, ‘vacation_days’: 1}, {‘name’: ‘冯骞仙’, ‘vacation_days’: 1},
{‘name’: ‘王利吉’, ‘vacation_days’: 2}]
list_b=[{‘name’: ‘袁美钠’, ‘vacation_days’: 1}, {‘name’: ‘刘宴希’, ‘vacation_days’: 1},
{‘name’: ‘王利吉’, ‘vacation_days’: 1}, {‘name’: ‘周红琴’, ‘vacation_days’: 1}]

方法一:先把重复数据单独整理出来,再把原有的重复数据删除,加入整理好的数据

list_a=[{'name': '刘宴希', 'vacation_days': 1}, {'name': '冯骞仙', 'vacation_days': 1},
        {'name': '王利吉', 'vacation_days': 2}]
list_b=[{'name': '袁美钠', 'vacation_days': 1}, {'name': '刘宴希', 'vacation_days': 1},
        {'name': '王利吉', 'vacation_days': 1}, {'name': '周红琴', 'vacation_days': 1}]
list_c=[]
list_d=list_a + list_b
e={}
#把相同的数据挑选出来,完成vacation_days相加
for i in list_a:
    for j in list_b:
        if i['name']==j['name']:
            vacation_days=i['vacation_days'] + j['vacation_days']
            e={'name':i['name'],'vacation_days':vacation_days}
            list_c.append(e)
#把重复的数据删除,不重复的保留下来
for x in list_c:
    a=x['name']
    for v in list_d:
        if v['name'] ==a:
            list_d.remove(v)
    #把相加好的重复数据添加进新的列表
    list_d.append(x)
print(list_d)

方法二:添加一个name数组,存放不重复的元素,如果出现重复元素,通过索引把对应的数组中的值获取出来,把相同元素值相加

list_a = [{'name': '刘宴希', 'vacation_days': 1}, {'name': '冯骞仙', 'vacation_days': 1},
             {'name': '王利吉', 'vacation_days': 2}]
list_b= [{'name': '袁美钠', 'vacation_days': 1}, {'name': '刘宴希', 'vacation_days': 1},
             {'name': '王利吉', 'vacation_days': 1},{'name': '周红琴', 'vacation_days': 1}]
list_c=list_a + list_b
names = []
list_d= []
    for i in list_c:
        print(i["name"])
        if i["name"] not in names:
            names.append(i["name"])
            list_d.append(i)
        else:
            #出现重复元素,获取索引
            print(names.index(i["name"]))
            #通过索引把对应的数组中的值获取出来
            list_d[names.index(i["name"])]["vacation_days"] = list_d[names.index(i["name"])]["vacation_days"] + i["vacation_days"]
    print(list_d)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值