繁体   English   中英

是否有更好或更优雅的方式来处理python中的字典循环异常?

[英]is there a better or more elegant way to handling dictionary loop exception in python?

基本上我只是解析一个JSON文件,其中包含有关几部电影的信息,并将其中的一些保存在不同的字典中供以后使用

例如:并非所有电影都有描述,我正在使用try / except来处理当json中没有描述时出现的“keyError”,有没有更好的方法呢?

for movie in json:
    # other entries
    try:
        description = {"description": movie_details['Description']}
    except KeyError:
        description = {"description": ""}
    # other entries
    try:
        other_value = {"other_value": movie_details["other_value"]
    except KeyError:
        other_value = {"other_value": ""}

这对我来说非常“肮脏”,如果你有一些提示写一个更干净的代码会很棒

谢谢

一种方法是使用带有sentinal值的.get()

for movie in json:
    description = {'description': movie_details.get('Description', '')}
    # and similarly for other values...

这可确保如果未找到密钥,则使用sentinal值。

我不确定你是否需要在循环中使用movie_detailsmovie 我想你的意思是后者。

一种方法是将movie_details转换为collections.defaultdict

movie_details = collections.defaultdict(str,movie_details)

如果找不到某个键,专用字典对象会调用str来创建一个新键(空字符串)

完成此操作后,只需像普通的dict访问一样使用它:

description = {'description': movie_details['Description']}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM