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 次 |
| 最近记录: |