如何使用列表理解从函数中的函数中提取键值?

2024-09-25 06:28:46 发布

您现在位置:Python中文网/ 问答频道 /正文

我有关于电影的资料,这是其中一部电影《伴娘》的资料。你知道吗

{'Similar': {'Info': [{'Name': 'Bridesmaids', 'Type': 'movie'}], 'Results': [{'Name': 'Baby Mama', 'Type': 'movie'}, {'Name': 'The Five-Year Engagement', 'Type': 'movie'}, {'Name': 'Bachelorette', 'Type': 'movie'}, {'Name': 'The Heat', 'Type': 'movie'}, {'Name': 'Date Night', 'Type': 'movie'}]}}

我想创建一个只包含电影名称的列表[](因此,我想进入'Similar',然后'Info',在字典中,找到'Name'键的值,提取这个值,e.g.'Bridesmaids'),然后迭代所有电影。你知道吗

首先,我创建了函数get \u movies \u from \u tastedive(name),以获取有关电影的数据(第1部分)。你知道吗

然后我尝试定义第二个函数,extract\ movie\ titles,它希望返回一个电影标题列表。我在这里使用列表理解。 当我试图通过打印(第22行和第23行)调用它时,它不起作用。。你知道吗

第一部分。你知道吗

def get_movies_from_tastedive(name):
    baseurl = 'https://tastedive.com/api/similar'
    pdict = {'q': name,'type': 'movies','limit': '5'}
    movie_resp = requests.get(baseurl, params = pdict)
    return movie_resp.json()

第二部分。你知道吗

def extract_movie_titles(name):
p = get_movies_from_tastedive(name)   
return[d['Name'] for d in p['Similar']['Info']]

print(extract_movie_titles(get_movies_from_tastedive("Tony Bennett"))) #line 22
print(extract_movie_titles(get_movies_from_tastedive("Bridesmaids"))) #line 23

SyntaxError: bad input on line 22


Tags: namefrominfo列表get电影typeextract
1条回答
网友
1楼 · 发布于 2024-09-25 06:28:46

一个压缩版本的代码加上一个简短的测试代码。你知道吗

import requests


def get_movies_from_tastedive(name):
    r = requests.get('https://tastedive.com/api/similar', params={'q': name, 'type': 'movies', 'limit': '5'})
    if r.status_code == 200:
        return [m['Name'] for m in r.json()['Similar']['Results'] if m['Type'] == 'movie']


movies = get_movies_from_tastedive('Tony Bennett')
if movies:
    print(movies)
else:
    print('ERR.Cant read movies')

输出

['The Startup Kids', 'The Englishman Who Went Up A Hill But Came Down A Mountain', 'A Place In The Sun', 'Last Tango In Paris', 'Charlie Chaplin']

相关问题 更多 >