我正在寻找一种优雅且高效的方法,将算法的结果累积到累加器中。
accumulator = { "k1": 15, "k2": 0, "k3": 12}
# Output of the algorithm values[i] matches keys[i]
keys = ["k1", "k2", "k3"]
values = [ 12, 13 , 14]
这里有两个解决我问题的解决方案,但我不相信有最好的解决方案。
简单的循环
for i in range(0, len(keys)):
accumulator[keys[i]] += values[i]
使用发电机
accumulator = {keys[i]: accumulator[i] + values[i] for i in rage(0, len(keys))}
编辑: - 字典的所有键都将出现在键列表中。
答案 0 :(得分:1)
您可以在馆藏中使用计数器
from collections import Counter
keys = ["k1", "k2", "k3"]
values = [ 12, 13 , 14]
c = Counter({ "k1": 15, "k2": 0, "k3": 12})
# to update value of k1 -this works even if k1 is not present
c.update(zip(keys, values))
答案 1 :(得分:0)
你可以试试这个:
for k, v in zip(keys, values):
accumulator[k] += v
它与您的第一个版本非常相似,只是略微简洁一些。这仅在k
中已存在accumulator
时有效,除非您对defaultdict
使用accumulator
。