объединить или расширить список перезаписываемых словарей до последнего списка - PullRequest
0 голосов
/ 05 сентября 2018

my for loop ниже вытягивает список словарей в каждой итерации. Я пытаюсь расширить final_list всеми списками, которые я получаю в каждой итерации. Но в конце, когда я печатаю final_list, он просто дает мне список из последней итерации. Другими словами, почти все предыдущие списки перезаписываются. Перепробовал все но ничего не работает. Может кто-нибудь указать мне, что может быть не так с моим кодом?

for i in range (1,21):
    results_list = []
    final_list = []
    url = "https://api.themoviedb.org/3/discover/movie?api_key=XX&primary_release_date.gte=2000-01-01&with_genres=35&sort_by=popularity.desc&page=" + str(i)
    response = requests.get(url, timeout = 10)
    #each page is a dictionary. we get only "results" which is a list.
    #so each iteration of the loop gives us a list to work with
    results_list = response.json()['results']
    final_list.extend(results_list)
    if response.status_code != 200:
        print('Failed to get data:', response.status_code)
print(final_list)

1 Ответ

0 голосов
/ 05 сентября 2018

В вашем коде дважды есть result_list, один раз в виде пустого списка, и второй раз как объект. Вы не обновляете свой список:

results_list = response.json()['results']

Вы сохраняете это как объект, который перезаписывает ваш пустой список. Вместо этого сохраните каждое значение в переменной с именем «results», а затем добавьте его в свой список «results_list»

Попробуйте следующее:

results_list = []

for i in range (1,21):
    url = "https://api.themoviedb.org/3/discover/movie?api_key=XX&primary_release_date.gte=2000-01-01&with_genres=35&sort_by=popularity.desc&page=" + str(i)
    response = requests.get(url, timeout = 10)
    #each page is a dictionary. we get only "results" which is a list.
    #so each iteration of the loop gives us a list to work with
    results = response.json()['results']
    results_list.append(results)
    final_list.extend(results_list)
    if response.status_code != 200:
        print('Failed to get data:', response.status_code)
print(results_list)
...