![](/img/trans.png)
[英]Python: Nested dictionary - create if key doesn't exist, else sum 1
[英]Python 2.7.14: “+=1 to Dictionary Item if Key Exists Else = 1” Syntax Doesn't Work
我試圖+ = 1到詞典中的一個項目,如果它存在,否則在詞典中創建鍵並將其設置為1.我知道我可以使用多行邏輯,但我真的想要看看是否可以將邏輯保持在一條線上。 這就是我想要做的:
myDict = {}
myDict[100] += 1 if 100 in myDict else 1
如果密鑰100不存在,它會拋出KeyError。 如何設置一個內置的其他邏輯來將密鑰100設置為1? 它甚至可能嗎?
非常感謝
問題是這被解析為
myDict[100] += (1 if 100 in myDict else 1)
這和寫作一樣
myDict[100] += 1
當然,這需要myDict[100]
已經存在。 您可以改為使用常規賦值和字典get
方法,該方法允許您指定在鍵不存在時要返回的內容:
myDict[100] = myDict.get(100, 0) + 1
或者你可以使用collections.Counter
,這是一個專門用於完成這項工作的專用字典:
import collections
myDict = collections.Counter()
myDict[100] += 1
使用get :
my_dict = {}
my_dict[100] = my_dict.get(100, 0) + 1
產量
{100: 1}
解釋 (來自文檔)
如果key在字典中,則返回key的值,否則返回default
您正在索引值,因此如果不在dict中則拋出錯誤這將起作用
if 100 in mydict:
mydict[100] += 1
else:
mydict[100] = 1
然而更漂亮的是mydict[100] = mydict.get(100, 0) + 1
除了collections.Counter還有collections.defaultdict,它允許你設置一個默認值,當一個非初始化的密鑰傳遞給dict時使用。 當然,它對於計數器來說太過分了,但在其他情況下可能非常精彩。
myDict[100] = myDict[100]+1 if 100 in myDict else 1
或者,也許更好:
myDict.setdefault(100, 0)
myDict[100] +=1
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.