python词典只能替换它找到的内容吗?

1qa*_*sw2 2 python dictionary

以下工作正常:

line = "Hello %(firstname)s %(lastname)s, how are you?"
print line % dict (firstname = "Mike", lastname="Kane")
Run Code Online (Sandbox Code Playgroud)

和打印:

你好Mike Kane,你好吗?

但如果我没有值lastname,我仍然希望这个工作:

line = "Hello %(firstname)s %(lastname)s, how are you?"
print line % dict (firstname = "Mike")
Run Code Online (Sandbox Code Playgroud)

我希望它只是忽略lastname键并打印:

你好迈克,你好吗?

Fre*_*Foo 6

你可以使用 defaultdict

from collections import defaultdict

line = "Hello %(firstname)s %(lastname)s, how are you?"
print line % defaultdict(str, firstname = "Mike")
Run Code Online (Sandbox Code Playgroud)

说明:defaultdict初始值设定项的第一个参数必须是可调用的,返回默认值.str是可调用的,返回一个空字符串(尝试str()).