在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中的相同方式工作?
谢谢!

最佳答案

我用format_map而不是format解决了这个问题,下面是我的示例:

print('I am {first_name} {last_name}'.format_map(d))

印刷的
I am Richard {last_name}

如预期。

10-07 22:51