#python #api #python-requests
#python #API #python-запросы
Вопрос:
import requests
from operator import itemgetter
#make an API call and store the response
url = 'https://hacker-news.firebaseio.com/v0/item/9884165.json'
r = requests.get(url)
print('Status code:' , r.status_code)
#process info about each submission
submission_ids = r.json()
submission_dicts = []
for submission_id in submission_ids:
#make separate API call for each submission
url = ("https://hacker-news.firebaseio.com/v0/item/"
str(submission_id) '.json')
submission_r = requests.get(url)
print(submission_r.status_code)
response_dict = submission_r.json()
submission_dict = {'title' : response_dict['title'],
"link" : 'https://hacker-news.firebaseio.com/v0/item?id='
str(submission_id) '.json',
'comments': response_dict.get('descendants', 0),
}
submission_dicts.append(submission_dict)
submission_dicts = sorted(submission_dicts, key=itemgetter('comments'),
reverse=True)
for submission_dict in submission_dicts:
print("nTitle:", submission_dict['title'])
print("Discussion link:", submission_dict['link'])
print("Comments:", submission_dict['comments'])
когда я пытаюсь запустить свой код, я получаю сообщение об ошибке, в котором говорится, что объект ‘NoneType’ не вызывается
submission_dict = {'title' : response_dict['title'],
TypeError: 'NoneType' object is not subscriptable
ожидаемым результатом должно быть название текущей топовой статьи в Hacker News вместе с количеством комментариев и ссылкой на статью.
может кто-нибудь сказать мне, какая часть моего кода пошла не так и как я могу это исправить?
Ответ №1:
Надеюсь, это просто ошибка.
#process info about each submission
submission_ids = r.json()
print( type( submission_ids ))
—> dict — что означает submission_id в следующем цикле for — это ключ, вам нужно значение. Замените submission_id —> submission_ids[submission_id] вот так.
for submission_id in submission_ids:
#make separate API call for each submission
url = ("https://hacker-news.firebaseio.com/v0/item/"
str(submission_ids[submission_id]) '.json')
Комментарии:
1. благодарим вас за это решение. я смог выяснить, что было не так с моим кодом, особенно с блоком for. submission_ids оказался словарем. ключом, который я искал, был ‘id’, но, тем не менее, этот ответ был действительно полезен