题目:两个数组,把重复的把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)