我拥有字典格式的电影数据,如下例所示:
{'Similar': {'Info': [{'Name': 'Tony Bennett', 'Type': 'music'}], 'Results': [{'Name': 'The Startup Kids', 'Type': 'movie'}, {'Name': 'Charlie Chaplin', 'Type': 'movie'}, {'Name': 'Venus In Fur', 'Type': 'movie'}, {'Name': 'Loving', 'Type': 'movie'}, {'Name': 'The African Queen', 'Type': 'movie'}]}}
我需要从中提取电影名称,但是在旅途中我会遇到不同的错误。已经尝试了很多事情,但是还没有找到解决方案。
我创建了函数get_movies_from_tastedive(movies),以获取有关TasteDive中电影的数据(第1部分),然后定义了第二个函数(第2部分)extract_movie_titles以获取电影标题。
获取KeyError:KeyError:与第23行类似 -我在符石学习环境中运行它,它还显示:{'error':'响应不可解释为json。尝试打印.text属性'}。 -如果我尝试打印.text,它说AttributeError:'dict'对象在第21行没有属性'text'
def get_movies_from_tastedive(movies):
baseurl = "https://tastedive.com/api/similar"
params_diction = {}
params_diction["q"] = movies
params_diction["type"] = "movies"
params_diction["limit"] = 5
movie_resp = requests_with_caching.get(baseurl, params = params_diction)
#print(movie_resp.json())
return movie_resp.json()
def extract_movie_titles(movies):
t = get_movies_from_tastedive(movies)
#title = t.text
#print(title)
return [d['Name'] for d in t['Similar']['Info']]
extract_movie_titles(get_movies_from_tastedive("Tony Bennett"))
extract_movie_titles(get_movies_from_tastedive("Bridesmaids"))
预期结果应为:['The Startup Kids','Charlie Chaplin'],'Venus In Fur','Loving','The African Queen'],但出现KeyError:类似第23行
答案 0 :(得分:1)
您要查找的信息在t ['Similar'] ['Results']
以下代码对我有用:
d = {'Similar': {'Info': [{'Name': 'Tony Bennett', 'Type': 'music'}], 'Results': [{'Name': 'The Startup Kids', 'Type': 'movie'}, {'Name': 'Charlie Chaplin', 'Type': 'movie'}, {'Name': 'Venus In Fur', 'Type': 'movie'}, {'Name': 'Loving', 'Type': 'movie'}, {'Name': 'The African Queen', 'Type': 'movie'}]}}
def extract_movie_titles(d):
return [m['Name'] for m in d['Similar']['Results']]
print (extract_movie_titles(d))