繁体   English   中英

如果键值对不存在,如何在不执行 IF 和 ELSE 的情况下自动初始化 Python 字典中的键值?

[英]How can I auto-initialise key-value in python dictionary if key-value pair does not exist, without doing IF & ELSE?

如果我的python字典键值(不知道使用了什么键)自动初始化为1,如果它不存在,如果它存在,我如何自动初始化? 我想这个概念可以用于任何其他逻辑。


例子:
下面的代码将给出错误,因为char_counts[char]尚未初始化 而且我还没有办法初始化它,因为我不知道一开始会使用什么键值对。 (实际上,如果我这样做的话,除了循环之外,python 中是否有一种方便的方法可以一次性初始化键值对?)
无论如何,我的主要问题如下。

for ~some loop~:
     char_counts[char] += 1

这是我目前的解决方法,对于简单的操作来说似乎有点冗长。 有没有更好的方法来简化/缩短这个?

for ~some loop~:
    if char_counts.get(char, None):
          char_counts[char] += 1
    else:
          char_counts[char] = 1

提前致谢!

使用 python 集合库中的 defaultdict

from collections import defaultdict
char_counts = defaultdict(lambda :0)
for ~some loop~:
     char_counts[char] += 1

defaultdict 永远不会抛出 KeyError,如果缺少键,则该键被初始化为 0。

您可以使用字典对象的get方法。

如果字典中不存在键,则 get 将返回要初始化字典的默认值。

char_counts = {}
for ~some loop~:
     # If key is not present, 0 will be returned by default
     char_counts[char] = char_count.get(char,0) + 1 

一旦您了解了上述代码的工作原理,请阅读 collections 模块中的 defaultdict 并尝试以下代码。

from collections import defaultdict
char_counts = defaultdict(int)
for ~some loop~:
     char_counts[char] += 1 

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM