Python-将2个列表合并到一个字典

Python-将2个列表合并到一个字典,python,list,dictionary,merge,Python,List,Dictionary,Merge,比如说 a = [a,b,c,d,a,b,c,d] b = [1,2,3,4,5,6,7,8] 输出应该是一个字典,如下所示: {'a':6, 'b':8, 'c':10, 'd':12} 我尝试使用zip,但它只是覆盖了值。我相信您希望这样: from collections import defaultdict a = list("abcdabcd") b = [1,2,3,4,5,6,7,8] d = defaultdict(int) for key, val in zip(a,b

比如说

a = [a,b,c,d,a,b,c,d]
b = [1,2,3,4,5,6,7,8]
输出应该是一个字典,如下所示:

{'a':6, 'b':8, 'c':10, 'd':12}

我尝试使用zip,但它只是覆盖了值。

我相信您希望这样:

from collections import defaultdict

a = list("abcdabcd")
b = [1,2,3,4,5,6,7,8]

d = defaultdict(int)
for key, val in zip(a,b):
    d[key] += val

看起来您希望相应数字的总和作为您的值

我建议使用a管理您的唯一密钥,并自己实现求和:

import collections

a, b, c, d = "abcd"
a = [a, b, c, d, a, b, c, d]
b = [1, 2, 3, 4, 5, 6, 7, 8]

result = collections.defaultdict(int)

for k,v in zip(a,b):
    result[k] += v

当您查找字典中不存在的键时,
defaultdict(int)
将创建一个没有初始值的整数(默认情况下表示“0”)。所以你会得到0+值+值。。。对于每个键,它似乎就是您要寻找的。

如果您想在没有默认dict的情况下尝试,以下是配方:

a = "abcdabcd"
b = [1,2,3,4,5,6,7,8]

no_dublicate={}
for item in zip(list(a),b):
    if item[0] not in no_dublicate:
        no_dublicate[item[0]]=[item[1]]
    else:
        for key,value in no_dublicate.items():
            if value==no_dublicate[item[0]]:
                no_dublicate[item[0]]=item[1]+int("".join(str(x) for x in value))

print(no_dublicate)
输出:

{'d': 12, 'c': 10, 'a': 6, 'b': 8}

“合并两个列表”是如何定义的?在字典中它看起来像是要在
b
中添加与
a
中相同字母键对应的整数。你需要在你的问题中明确地说出来,这在OP的代码中。我想他已经定义好了。