我有一个字典,里面可能包含不同的内容,例如:
{"name": "Dmitry", "surname": "Pak"}
{"full_name": "John Smith"}
{"name": "Joe", "last_name": "Smith"}
我需要打印用户的全名。我看到以下解决方案:
try:
print dic["full_name"]
except:
try:
print dic["name"]+" "+dic["surname"]
except:
print dic["name"]+" "+dic["last_name"]
构建类似树的 try 是一种很好的编码风格吗……除了意大利面条?:)
UPD1(@strcat)
print dic.get("full_name",dic.get("name", "DefaultName")+" "+dic.get("last_name",dic.get("surname", "DefaulSurname")))
请您参考如下方法:
您可以使用 in 关键字来检查字典中是否存在键:
if "full_name" in dic:
... do something
使用它,您的代码可能如下所示:
if "full_name" in dic:
print dic["full_name"]
elif "surname" in dic:
print dic["name"]+" "+dic["surname"]
else:
print dic["name"]+" "+dic["last_name"]
当然你也可以把它做成一个衬里:
print dic["full_name"] if "full_name" in dic \
else (dic["name"] + " " + (dic["surname"] if "surname" in dic else dic["last_name"]))
