我有一个脚本,可以从URL获取数据并将其转换为JSON文件。我有两个我感兴趣的项目。
这是他们返回的结果的一个示例:
"images": [
{
"type": "PosterPortrait",
"url": "https://ingresso-a.akamaihd.net/img/cinema/cartaz/22454-cartaz.jpg"
},
{
"type": "PosterHorizontal",
"url": "https://ingresso-a.akamaihd.net/img/cinema/cartaz/22454-destaque.jpg"
}
],
"trailers": [
{
"embeddedUrl": "//www.youtube.com/embed/YUBBkz5ZbKY",
"type": "Youtube",
"url": "https://www.youtube.com/watch?v=YUBBkz5ZbKY"
},
{
"embeddedUrl": "//www.youtube.com/embed/YUBBkz5ZbKY",
"type": "Youtube",
"url": "https://www.youtube.com/watch?v=YUBBkz5ZbKY"
}
],
我需要从每个对象中获取“ URL”和“类型”,以保存到Postgresql数据库OneToMany-movie(One):media(Many)中。 问题是“预告片”可能是空的,我不需要保存它,因为没有任何数据。
code.py
if(i['trailers']):
a = [
{'url': i['images'][0]['url'], 'type': i['images'][0]['type']},
{'url': i['images'][1]['url'], 'type': i['images'][1]['type']},
{'url': i['trailers'][0]['url'], 'type': 'Trailer'},
{'url': i['trailers'][1]['url'], 'type': 'Trailer'},
]
else:
a = [
{'url': i['images'][0]['url'], 'type': i['images'][0]['type']},
{'url': i['images'][1]['url'], 'type': i['images'][1]['type']},
]
这是我的代码。我正在尝试检查i ['trailers']中是否有任何元素。如果是这样,他将被存储在字典中。
有人可以帮我检查一下吗?谢谢!
答案 0 :(得分:1)
您可以在Python词典中以以下方式使用get
方法
val = i.get('trailers', None)
如果存在则返回i['trailers']
,否则返回None
。
您可以在if条件下使用它。
答案 1 :(得分:1)
如果trailers
返回一个空列表,并且images
始终不为空,则您可以使用列表理解功能将所有代码替换为一行:
a = [{'url': x['url'], 'type': x['type']} for x in i['images'] + i['trailers']]
如果trailers
可能丢失或None
(而不是一个空列表),则只需在其前面添加以下行:
i['trailers'] = i.get('trailers') or []