我想在下面的列表中使用list comprehension;
movie_dicts = [
{'title':'A Boy and His Dog', 'year':1975, 'rating':6.6},
{'title':'Ran', 'year':1985, 'rating': 8.3},
{'year':2010, 'rating':8.0},
{'title':'Scanners', 'year':1981, 'rating': 6.7}
]
利用我对列表理解和词典的了解,我知道
title_year = [i['title'] for i in movie_dicts]
print title_year
将打印包含电影标题的列表。但是,由于其中一个电影标题丢失,我收到以下错误
Traceback (most recent call last):
File "./loadjson.py", line 30, in <module>
title_year = [i['title'] for i in movie_dicts]
KeyError: 'title'
有没有办法检查电影片名是否存在,如果不存在,则在其位置放置默认值?
答案 0 :(得分:4)
使用dict.get()
method返回缺失密钥的默认值:
title_year = [i.get('title', '<untitled>') for i in movie_dicts]
这会将字符串'<untitled>'
替换为缺少的标题。或者,过滤掉没有密钥的条目(生成一个较短的列表):
title_year = [i['title'] for i in movie_dicts if 'title' in i]
答案 1 :(得分:3)
使用
title_year = [i.get('title', 'defaultTitle') for i in movie_dicts]
如果指定的键不存在,它可以指定默认值。