例如
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,但它只是覆盖了值。
答案 0 :(得分:3)
我相信你想要这个:
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
答案 1 :(得分:2)
您似乎想要相应数字的总和作为您的值。
我建议您使用collections.defaultdict
管理您的唯一密钥,并自行实施汇总:
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 +值+值...,这似乎是您正在寻找的。 p>
答案 2 :(得分:0)
如果你想尝试没有默认字典,这是食谱:
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}