![](/img/trans.png)
[英]How can I store each key-value pair of my python dictionary on a separate line in json file?
[英]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.