在Python3.4中,您可以执行以下操作:
class MyDict(dict):
def __missing__(self, key):
return "{%s}" % key
然后类似:
d = MyDict()
d['first_name'] = 'Richard'
print('I am {first_name} {last_name}'.format(**d))
按预期打印:
I am Richard {last_name}
但是此代码段在Python3.6 +中不起作用,在尝试从字典中获取KeyError
值的同时返回last_name
,是否有任何变通办法可以使字符串格式在与Python3.4一样吗?
谢谢!
答案 0 :(得分:3)
按照我的示例,我使用format_map
而不是format
解决了这个问题:
print('I am {first_name} {last_name}'.format_map(d))
已打印
I am Richard {last_name}
符合预期。
答案 1 :(得分:1)
在Python 3.6+中,您可以使用格式化的字符串文字(PEP 498):
class MyDict(dict):
def __missing__(self, key):
return f'{{{key}}}'
d = MyDict()
d['first_name'] = 'Richard'
print(f"I am {d['first_name']} {d['last_name']}")
# I am Richard {last_name}