RBu*_*ntu 41 python python-2.7
我有一段代码在AutoCAD中搜索包含某些关键字的文本框(例如,"overall_weight"
在这种情况下),并用字典中的值替换它.但是,有时字典键被分配给空字符串,有时,键不会完全存在.在这些情况下,"overall_weight"
关键字应替换为"N/A"
.我想知道是否有一种更加pythonic的方式来组合KeyError
异常和else
两者都去,nObject.TextString = "N/A"
所以它没有输入两次.
if nObject.TextString == "overall_weight":
try:
if self.var.jobDetails["Overall Weight"]:
nObject.TextString = self.var.jobDetails["Overall Weight"]
else:
nObject.TextString = "N/A"
except KeyError:
nObject.TextString = "N/A"
Run Code Online (Sandbox Code Playgroud)
编辑:为了澄清未来的访问者,我只需要处理3个案例,正确的答案可以处理所有3个案例而不需要任何额外的填充.
dict[key]
存在并指向非空字符串.TextString
替换为分配给的值dict[key]
.
dict[key]
存在并指向空字符串.TextString
换成了"N/A"
.
dict[key]
不存在.TextString
换成了"N/A"
.
pzp*_*pzp 67
dict.get()
如果存在,则使用它将返回与给定键关联的值None
.(注意,''
并且None
都是假值.)如果s
为true,则将其赋值给它,nObject.TextString
否则给它一个值"N/A"
.
if nObject.TextString == "overall_weight":
nObject.TextString = self.var.jobDetails.get("Overall Weight") or "N/A"
Run Code Online (Sandbox Code Playgroud)
not*_*.no 17
使用get()
词典功能.None
如果密钥不存在,或者如果指定第二个值,它将返回,它将其设置为默认值.然后你的语法将如下所示:
nObject.TextString = self.var.jobDetails.get('Overall Weight', 'N/A')
Run Code Online (Sandbox Code Playgroud)
使用.get()
具有默认参数"N/A"
其中如果该键不存在,将用于:
nObject.TextString = self.var.jobDetails.get("Overall Weight", "N/A")
Run Code Online (Sandbox Code Playgroud)
如果需要处理空字符串,只需修改如下:
nObject.TextString = self.var.jobDetails.get("Overall Weight") or "N/A"
Run Code Online (Sandbox Code Playgroud)
nObject.TextString
如果a KeyError
被引发,或者如果检索到的值为空''
,则将设置为"N/A" :, []
等.
归档时间: |
|
查看次数: |
2592 次 |
最近记录: |