【发布时间】:2021-09-17 17:22:38
【问题描述】:
例如我有以下设置:
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
【问题讨论】:
-
你可以使用
collections.Counter() -
你可以有一个循环,但你当前的循环效率低下。 (您最终会扫描字典中每个键的列表。)最好循环遍历每个标记,检查该键是否存在于字典中,然后递增。
-
字典理解算作循环吗?
dic = {k:tokens.count(k) for k in dic.keys()} -
如果字典理解比 for 循环更快,我会接受。 @约翰尼莫普
-
你没有说你想要更快 - 只是没有循环。在这种情况下,循环可能会更快,因为在我的示例中,
count为每个键调用,这意味着 3 次通过列表。
标签: python dictionary increment