【问题标题】:Python loop through api and append multiple objects as tuples to listPython循环通过api并将多个对象作为元组附加到列表中
【发布时间】:2019-11-16 12:01:03
【问题描述】:

我也在尝试遍历所有 api 页面并获取多个 json 对象并将它们作为元组存储在列表中并返回最终列表

这仅适用于 1 个对象,但一旦我开始添加多个对象,我就无法让它工作。我尝试了各种调整并更改为 while 循环,但似乎无法开始工作

def star_wars_characters(url):
    all_names1 = []
    response1 = requests.get(url)
    data1 = response1.json()

    for x in data1['results']:
        all_names1.append(x['name'])


    while data1['next'] is not None:
        response1 = requests.get(data1['next'])
        data1 = response1.json()

        for x in data1['results']:
            all_names1.append(x['name'])

    return all_names1


print(star_wars_characters("https://swapi.co/api/people/?page=1"))

我正在尝试实现如下所示的输出,但适用于所有页面。这只是我通过将 for 循环更改为 while 设法返回的第一页的结果,但无法获取剩余的数据页:

[('Luke Skywalker', '77'), ('C-3PO', '75'), ('R2-D2', '32'), ('Darth Vader', '136'), ('Leia Organa', '49'), ('Owen Lars', '120'), ('Beru Whitesun lars', '75'), ('R5-D4', '32'), ('Biggs Darklighter', '84'), ('Obi-Wan Kenobi', '77')]

【问题讨论】:

  • 您是否收到任何错误消息?始终将完整的错误消息(完整的 Traceback)放在问题中(作为文本,而不是屏幕截图)。还有其他有用的信息。
  • 使用mylist.extend(another_list)方法将两个列表连接在一起
  • 如何在多页中使用它?显示有问题。您可以创建最少的工作代码,以便我们可以运行它并查看问题。
  • “所有页面”是什么意思?当你用data1['next'] 重复它时,这不就是你在做的吗?
  • 我试过你的脚本,它创建了一个包含 87 个字符的列表。这就是所有页面。

标签: python json list loops tuples


【解决方案1】:
import requests

def star_wars_characters(url):
    return_data = []

    response = requests.get(url)
    data = response.json()

    while True:    
        for result in data['results']:
            return_data.append((result['name'], result['mass']))

        if data['next'] is None:
            break

        response = requests.get(data['next'])
        data = response.json()

    return return_data

print(star_wars_characters("https://swapi.co/api/people/?page=1"))

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-03-22
    • 1970-01-01
    • 2017-12-22
    • 2023-01-07
    • 2022-07-06
    • 2021-10-31
    • 2020-04-09
    • 2018-05-12
    相关资源
    最近更新 更多