2 回答

TA貢獻1811條經驗 獲得超5個贊
Python確實有一個三元運算符,如Lua和許多其他語言
但與Lua不同的是,Python不會將未定義的變量作為“false”值處理,如果您嘗試計算未定義的變量,它將引發錯誤。特別是在您的情況下,您將收到密鑰不存在的密鑰錯誤。ticker
路亞三元:
total_volume[ticker] = (total_volume[ticker] or 0) + a
蟒蛇等效物:
total_volume[ticker] = (total_volume[ticker] if ticker in total_volume else 0) + a
如果 Lua 將把 if 之前的值傳遞給你,python 將把后面的語句在 的時候之前傳遞給你,而當它是 。or
truthy
if
true
else
false
為了安全地評估密鑰是否在字典中,我們可以使用 。in
這主要是為了演示您在Lua中使用的三元運算以及如何在Python中執行此操作,但這并不意味著它是解決此問題的正確工具。
我建議一個更干凈的解決方案:
total_volume[ticker] = total_volume.get(ticker, 0) + 1
它更少的代碼,更容易推理。 將返回,或者如果字典中不存在該鍵,它將返回默認值 。get
total_volume[ticker]
0

TA貢獻1784條經驗 獲得超8個贊
對于您的用例,我建議使用:defaultdict
from collections import defaultdict
d = defaultdict(int)
d["counter"] += 5
print(d.items()) # output: dict_items([('counter', 5)])
但是——
我不認為這是一個好的做法,但你可以在所需的范圍內使用或動態訪問變量:locals()globals()
a = 1
print(locals().get("a")) # ouput:1
c = locals().get("c", 2) + 1
print(c) # output 3
添加回答
舉報