Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/311.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 使用默认值从字典列表中提取项_Python_Dictionary - Fatal编程技术网

Python 使用默认值从字典列表中提取项

Python 使用默认值从字典列表中提取项,python,dictionary,Python,Dictionary,我想在下面的列表中使用列表理解 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

我想在下面的列表中使用列表理解

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'
回溯(最近一次呼叫最后一次):
文件“/loadjson.py”,第30行,在
title_year=[i['title']代表电影中的i]
KeyError:“标题”
是否有任何方法可以检查电影标题是否存在,如果不存在,请在其位置放置默认值?

使用返回缺少关键帧的默认值:

title_year = [i.get('title', '<untitled>') for i in movie_dicts]
使用返回缺少键的默认值:

title_year = [i.get('title', '<untitled>') for i in movie_dicts]
使用

如果指定的键不存在,则可以指定默认值。

使用


如果指定的键不存在,则可以指定默认值。

使用
.get(键,默认值)
避免KeyNotFound错误
title\u year=[i.get('title')for i in movie dicts]
使用
.get(键,默认值)
避免KeyNotFound错误
title\u year=[i.get('title'))就我个人而言,我更喜欢第二个选项,因为它在阅读全文时更加明确code@jlnabais:但它产生不同的输出;列表中的项目将减少。如果这是更好的选择,则完全取决于您试图对列表执行的操作。当然,我知道我错过了他要求默认值的部分,在这种情况下,更好的答案是第一个解决方案,而不是字典列表的“过滤”版本。感谢您的帮助:)我个人更喜欢第二个选项,因为在阅读全文时更为明确code@jlnabais:但它产生不同的输出;列表中的项目将减少。如果这是更好的选择,这完全取决于你试图对列表做什么。当然,我知道我错过了他要求默认值的部分,在这种情况下,更好的答案是第一个解决方案,而不是字典列表的“过滤”版本。谢谢你的帮助:)谢谢你的帮助谢谢你的帮助
title_year = [i.get('title', 'defaultTitle') for i in movie_dicts]