带有可选dict键值的字符串格式

Nik*_*war 6 python string-formatting

有没有办法用dict格式化字符串,但可选择没有键错误?

这很好用:

opening_line = '%(greetings)s  %(name)s !!!'
opening_line % {'greetings': 'hello', 'name': 'john'}
Run Code Online (Sandbox Code Playgroud)

但是,让我说我不知道​​这个名字,我想格式化上面的行只是为了'greetings'.就像是,

 opening_line % {'greetings': 'hello'}
Run Code Online (Sandbox Code Playgroud)

即使以下情况,输出也会很好:

'hii %(name)s !!!'  # keeping name un-formatted 
Run Code Online (Sandbox Code Playgroud)

但这会KeyError在拆包时给出

有什么办法吗?

pio*_*kuc 10

使用defaultdict,这将允许您为字典中不存在的键指定默认值.例如:

>>> from collections import defaultdict
>>> d = defaultdict(lambda: 'UNKNOWN')
>>> d.update({'greetings': 'hello'})
>>> '%(greetings)s  %(name)s !!!' % d
'hello  UNKNOWN !!!'
>>> 
Run Code Online (Sandbox Code Playgroud)

  • 请注意,这不适用于`str.format`. (6认同)