亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

蟒蛇中的魯阿風格

蟒蛇中的魯阿風格

墨色風雨 2022-10-05 10:06:12
變量 a 不存在我可以用Lua語言寫:a = (a or 0) + 1現在 a = 1這讓我不必提前聲明變量“a”。這是模擬a = 0a = a + 1我怎樣才能在蟒蛇中做同樣的事情?a = (a or 0) + 1附言:為什么它很重要?要避免將零分配給變量:蟒蛇(4 行代碼):for ticker in ticker_list:    total_volume[ticker] = 0for a in range (1,10):    total_volume[ticker] = total_volume[ticker] + alua(2 行代碼):for a=1,9 do:    total_volume[ticker] = (total_volume[ticker] or 0) + a
查看完整描述

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 將把后面的語句在 的時候之前傳遞給你,而當它是 。ortruthyiftrueelsefalse

為了安全地評估密鑰是否在字典中,我們可以使用 。in

這主要是為了演示您在Lua中使用的三元運算以及如何在Python中執行此操作,但這并不意味著它是解決此問題的正確工具。


我建議一個更干凈的解決方案:

   total_volume[ticker] = total_volume.get(ticker, 0) + 1

它更少的代碼,更容易推理。 將返回,或者如果字典中不存在該鍵,它將返回默認值 。gettotal_volume[ticker]0


查看完整回答
反對 回復 2022-10-05
?
青春有我

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


查看完整回答
反對 回復 2022-10-05
  • 2 回答
  • 0 關注
  • 103 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號