有没有更好或更优雅的方法来处理python中的字典循环异常?
基本上,我只是解析一个JSON文件,其中包含关于几部电影的信息,并将其中的一些保存在另一个字典中以供以后使用 例如: 不是所有电影都有描述,我使用try/except来处理json中没有描述时出现的“keyrerror”,有更好的方法吗有没有更好或更优雅的方法来处理python中的字典循环异常?,python,python-3.x,dictionary,exception,Python,Python 3.x,Dictionary,Exception,基本上,我只是解析一个JSON文件,其中包含关于几部电影的信息,并将其中的一些保存在另一个字典中以供以后使用 例如: 不是所有电影都有描述,我使用try/except来处理json中没有描述时出现的“keyrerror”,有更好的方法吗 用于json格式的电影: #其他条目 尝试: description={“description”:电影详细信息['description']} 除KeyError外: description={“description”:“”} #其他条目 尝试: 其他值={
用于json格式的电影:
#其他条目
尝试:
description={“description”:电影详细信息['description']}
除KeyError外:
description={“description”:“”}
#其他条目
尝试:
其他值={“其他值”:电影详细信息[“其他值”]
除KeyError外:
其他值={“其他值”:“”}
在我看来,这似乎非常“肮脏”,如果你有一些技巧,写一个更干净的代码将是可怕的
谢谢一种方法是使用带有sentinal值的
.get()
:
for movie in json:
description = {'description': movie_details.get('Description', '')}
# and similarly for other values...
这样可以确保如果找不到键,则使用sentinal值
我不确定是否需要在循环中使用
movie\u details
或movie
。我想你是指后者。一种方法是将movie\u details
转换为集合。defaultdict
movie_details = collections.defaultdict(str,movie_details)
如果找不到键,专用字典对象将调用str
来创建新键(空字符串)
完成此操作后,只需像正常的dict访问一样使用它:
description = {'description': movie_details['Description']}
您可以使用.get,查看
movie\u details
是否是dict
在访问movie\u details中的值之前可以询问