python - 如何在不使用循环的情况下增加字典中的值?
问题描述
例如我有以下设置:
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
解决方案
这是使用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}
推荐阅读
- python - 使用 tkinter 随时间自动移动形状
- python - Django 创建一个带有 SmallUUIDField() id 的 genericForeignKey
- sql-server - 在 SQL Server 中跨多行分别连接多列
- c++ - 如何交换数组中 Min 和 Max 的位置?
- java - 计算 @Category 在 JUnit 的一组测试中出现的次数
- ios - APNS 和 iOS - 是否可以将多个证书部署到 Apple Push Notification Server?
- c# - 在 C# 控制台应用程序中保持 ActiveMQ 侦听器处于活动状态并在关闭之前优雅地处理资源的正确方法是什么?
- r - plotly r烛台图的悬停文本
- javascript - 如何组合具有相同属性的 2 个对象-Javascript
- sql - 从样本表中多次加入