我有两个元组列表。一个列表具有唯一的元素而另一个列表没有。我需要合并并转换它们。见下面的例子:
non_unique = [('A',2), ('B',3), ('C',4), ('D',5), ('E',6), ('A',8), ('C', 5), ('E',1) ]
unique = [('A',5), ('B',4), ('C',2)]
non_unique
重复A
,C
,E
。但是,只有在non_unique
中出现相同的非数字时,我才有兴趣合并(添加相应的数字)unique
。未使用unique
中的数字。因此,unique
中的A,B,C给出了dict:
result = {'A': 10, 'B': 3, 'C': 9}
我不确定应该使用哪些步骤来获得此结果。任何提示都会有所帮助。
答案 0 :(得分:4)
首先声明两个元组列表
non_unique = [('A',2), ('B',3), ('C',4), ('D',5), ('E',6), ('A',8), ('C', 5), ('E',1) ]
unique = [('A',5), ('B',4), ('C',2)]
然后从唯一键创建一个新词典,起始值为0
d = {key: 0 for (key, value) in unique}
然后遍历non_unique
中的每个元组,检查密钥是否已存在。如果密钥确实存在,请将值添加到字典中的现有值。
for (k, v) in non_unique:
if k in d:
d[k] += v
完整代码:
non_unique = [('A',2), ('B',3), ('C',4), ('D',5), ('E',6), ('A',8), ('C', 5), ('E',1) ]
unique = [('A',5), ('B',4), ('C',2)]
d = {key: 0 for (key, value) in unique}
print(d)
for (k, v) in non_unique:
if k in d:
d[k] += v
print(d)
答案 1 :(得分:0)
d = {a[0]: sum( [tup[1] for tup in non_unique if tup[0] == a[0]]) for a in unique}