我有A = [a, b, c, d, a, d, c]
和B=[1, 2, 3, 4, 5, 6, 7]
为什么dict(zip(A,B))
不返回{'a': 6, 'b': 2, 'c': 10, 'd': 10}
?
如何使其起作用?
答案 0 :(得分:2)
使用简单的迭代
例如:
A = ["a", "b", "c", "d", "a", "d", "c"]
B= [1, 2, 3, 4, 5, 6, 7]
result = {}
for a, b in zip(A, B):
if a not in result:
result[a] = 0
result[a] += b
print(result)
或使用collections.defaultdict
例如:
from collections import defaultdict
result = defaultdict(int)
for a, b in zip(A, B):
result[a] += b
pprint(result)
输出:
{'a': 6, 'b': 2, 'c': 10, 'd': 10}
答案 1 :(得分:1)
dict
只会覆盖这些值。.您想要的东西不会那么容易。您需要这样的东西:
#!/usr/bin/env python3
from collections import defaultdict
A = ["a", "b", "c", "d", "a", "d", "c"]
B = [1, 2, 3, 4, 5, 6, 7]
output = defaultdict(int)
for a,b in zip(A,B):
output[a] += b
print(output)
结果:
defaultdict(<class 'int'>, {'a': 6, 'b': 2, 'c': 10, 'd': 10})
defaultdict
将默认情况下将每个新键值设置为0
。允许我们对每个键调用+=
而不会出错。给我们所需的总和。