如何检查python中是否存在对象

时间:2018-12-27 22:39:33

标签: python

我有一个脚本,可以从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']中是否有任何元素。如果是这样,他将被存储在字典中。

有人可以帮我检查一下吗?谢谢!

2 个答案:

答案 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 []