对不起,如果标题不够清晰,但它是我能想到的最好的。这是我的代码的一部分,一个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复制。
两次使用打印规则似乎很愚蠢,但它是我能想到的最好的。有没有办法简化这个?
谢谢:)。
答案 0 :(得分:9)
您可以简单地使用dict.setdefault
:
print woodWOPfile, 'YA="%s"' % xbo.setdefault('Y', xbo_prev['Y'])
如果它存在于地图中,则获取与键Y
对应的值,否则将其设置为第二个参数并返回它。
答案 1 :(得分:1)
if not 'Y' in xbo:
xbo['Y']=xbo_prev['Y']
print >>woodWOPfile, 'YA="%s"' %xbo['Y']
为什么不检查它是否存在并先设置它。
答案 2 :(得分:0)
现有的两个答案也有效,但如果您知道xbo_prev
将拥有您的密钥,则另一种方法是利用.get()
的default
参数:
print >>woodWOPfile, 'YA="%s"' % xbo.get('Y', xbo_prev['Y'])
请注意,这不会修改xbo
,如果您打算修改xbo
,您可以像juanchopanza建议的那样使用.setdefault()
,尽管我认为提出变异印刷声明中的操作令人困惑,并且可能造成弊大于利。