簡體   English   中英

Python 2.7.14:“+ = 1到字典項,如果密鑰存在等於= 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM