如何将元组列表合并并转换为Dict

时间:2015-07-17 14:56:35

标签: python dictionary tuples

我有两个元组列表。一个列表具有唯一的元素而另一个列表没有。我需要合并并转换它们。见下面的例子:

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重复ACE。但是,只有在non_unique中出现相同的非数字时,我才有兴趣合并(添加相应的数字)unique。未使用unique中的数字。因此,unique中的A,B,C给出了dict:

    result = {'A': 10, 'B': 3, 'C': 9}

我不确定应该使用哪些步骤来获得此结果。任何提示都会有所帮助。

2 个答案:

答案 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}