为了账号安全,请及时绑定邮箱和手机立即绑定

蟒蛇中的鲁阿风格

蟒蛇中的鲁阿风格

墨色风雨 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 关注
  • 76 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信