Python : 简化 try / except 代码?
Python : simplify try / except code?
抱歉,如果标题不够解释,但这是我能想到的最好的。这是我的代码的一部分,一个 python 脚本,将文件从 Xilog3 转换为 woodWOP 格式(cnc 程序)。
try:
print >>woodWOPfile, 'YA="%s"' %xbo['Y']
except KeyError:
xbo['Y']=xbo_prev['Y']
print >>woodWOPfile, 'YA="%s"' %xbo['Y']
这会将字典键项打印到输出文件。如果密钥不存在,我想从以前版本的字典中加载它,xbo_prev,它是在每个新行读取周期之前从 xbo 复制的。
两次使用打印规则似乎很愚蠢,但这是我能想到的最好的。有没有办法简化这个?
谢谢 :).
您可以简单地使用 dict.setdefault
:
print woodWOPfile, 'YA="%s"' % xbo.setdefault('Y', xbo_prev['Y'])
如果键 Y
存在于映射中,则获取对应的值,否则将其设置为第二个参数并 returns 它。
if not 'Y' in xbo:
xbo['Y']=xbo_prev['Y']
print >>woodWOPfile, 'YA="%s"' %xbo['Y']
为什么不检查它是否存在并先设置它。
现有的两个答案也有效,但如果您知道 xbo_prev
将有您的密钥,则另一种方法是利用 .get()
的 default
参数:
print >>woodWOPfile, 'YA="%s"' % xbo.get('Y', xbo_prev['Y'])
请注意,这不会修改 xbo
,如果您打算修改 xbo
,您可以像 juanchopanza 建议的那样使用 .setdefault()
,尽管我认为将变异操作放在打印语句令人困惑,可能弊大于利。
抱歉,如果标题不够解释,但这是我能想到的最好的。这是我的代码的一部分,一个 python 脚本,将文件从 Xilog3 转换为 woodWOP 格式(cnc 程序)。
try:
print >>woodWOPfile, 'YA="%s"' %xbo['Y']
except KeyError:
xbo['Y']=xbo_prev['Y']
print >>woodWOPfile, 'YA="%s"' %xbo['Y']
这会将字典键项打印到输出文件。如果密钥不存在,我想从以前版本的字典中加载它,xbo_prev,它是在每个新行读取周期之前从 xbo 复制的。
两次使用打印规则似乎很愚蠢,但这是我能想到的最好的。有没有办法简化这个?
谢谢 :).
您可以简单地使用 dict.setdefault
:
print woodWOPfile, 'YA="%s"' % xbo.setdefault('Y', xbo_prev['Y'])
如果键 Y
存在于映射中,则获取对应的值,否则将其设置为第二个参数并 returns 它。
if not 'Y' in xbo:
xbo['Y']=xbo_prev['Y']
print >>woodWOPfile, 'YA="%s"' %xbo['Y']
为什么不检查它是否存在并先设置它。
现有的两个答案也有效,但如果您知道 xbo_prev
将有您的密钥,则另一种方法是利用 .get()
的 default
参数:
print >>woodWOPfile, 'YA="%s"' % xbo.get('Y', xbo_prev['Y'])
请注意,这不会修改 xbo
,如果您打算修改 xbo
,您可以像 juanchopanza 建议的那样使用 .setdefault()
,尽管我认为将变异操作放在打印语句令人困惑,可能弊大于利。