![](/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.