1

对不起,如果标题不够解释,但这是我能想到的最好的。这是我的代码的一部分,一个将文件从 Xilog3 转换为 woodWOP 格式(cnc 程序)的 python 脚本。

try:
    print >>woodWOPfile, 'YA="%s"' %xbo['Y']
except KeyError:
    xbo['Y']=xbo_prev['Y']
    print >>woodWOPfile, 'YA="%s"' %xbo['Y']

这会将字典键项打印到输出文件。如果该键不存在,我想从以前版本的字典 xbo_prev 中加载它,它是在每个新行读取周期之前从 xbo 复制的。

两次使用打印规则似乎很愚蠢,但这是我能想到的最好的。有没有办法简化这个?

谢谢 :)。

4

3 回答 3

9

你可以简单地使用dict.setdefault

print woodWOPfile, 'YA="%s"' % xbo.setdefault('Y', xbo_prev['Y'])

Y如果它存在于映射中,这将获取与键对应的值,否则将其设置为第二个参数并返回它。

于 2015-12-07T21:38:41.230 回答
1
if not 'Y' in xbo: 
    xbo['Y']=xbo_prev['Y']
print >>woodWOPfile, 'YA="%s"' %xbo['Y']

为什么不检查它是否在那里并首先设置它。

于 2015-12-07T21:41:38.297 回答
0

现有的两个答案也可以,但是如果您知道xbo_prev将有您的关键,则另一种选择是利用.get()'sdefault参数:

print >>woodWOPfile, 'YA="%s"' % xbo.get('Y', xbo_prev['Y'])

请注意,这不会修改xbo,如果您打算修改,则xbo可以.setdefault()像 juanchopanza 建议的那样使用,尽管我认为将变异操作放在 print 语句中是令人困惑的,并且可能弊大于利。

于 2015-12-07T21:47:55.957 回答