首页 > 解决方案 > 如何在不使用循环的情况下增加字典中的值?

问题描述

例如我有以下设置:

dic = {"A":0, "B":0, "C":0} 
tokens = ["A", "B", "C", "C", "D", "E", "F"] 

如果令牌中的元素存在于字典键中,则将该值增加 1。

如何在不使用循环的情况下执行此操作?我现在有以下for循环

for key in dict.keys(): 
    if key in tokens: 
         dict[key] += 1 

标签: pythondictionaryincrement

解决方案


这是使用Counter的无循环版本:

from collections import Counter

dic = {"A": 0, "B": 0, "C": 0}
tokens = ["A", "B", "C", "C", "D", "E", "F"]

res = Counter(filter(dic.__contains__, tokens))
print(res)

输出

{'C': 2, 'A': 1, 'B': 1}

更新

如果 中有一个键dic,但该键不存在于 中tokens,您可以执行以下操作:

from collections import Counter

dic = {"A": 0, "B": 0, "C": 0, "Z": 0}
tokens = ["A", "B", "C", "C", "D", "E", "F"]

dic.update(Counter(filter(dic.__contains__, tokens)))
print(dic)

输出

{'A': 1, 'B': 1, 'C': 2, 'Z': 0}

推荐阅读