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的代码中。我想他已经定义好了。