簡體   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