【发布时间】:2021-06-02 00:58:39
【问题描述】:
我有以下问题。我正在组装一个dict数组。但是,追加命令只放置最后一条记录。请注意,for 增加变量 i 并在列表中循环。
GITHUB API 请求返回 items 列表中的 100 条记录,因此我通过此列表仅获取我感兴趣的信息,并为每条记录形成一个字典并将该记录添加到列表中。
代码末尾的print() 命令显示了一个数组,其中all 数据等于 items 数组中的最后一个数据。
import requests
import json
def requisicao_api(url):
resposta = requests.get(url)
if resposta.status_code == 200:
return resposta.json()
else:
return resposta.status_code
def imprime_repositorios(self):
dados_api = self.requisicao_api()
if type(dados_api) is not int:
for i in range(len(dados_api)):
print(dados_api[i]['name'])
else:
print(dados_api)
urlprincipal = 'https://api.github.com/search/repositories?q=topic:data-science&sort=stars&order=desc&page=1&per_page=100'
dados_api = requisicao_api(urlprincipal)
items = dados_api['items']
def criar_json(nome):
with open(nome, 'w') as f:
return f
lista_registros = []
registro = {}
for i in range(len(items)):
registro[ 'nome' ] = items[i]['full_name']
registro[ 'estrelas'] = items[i]['stargazers_count']
lista_registros.append(registro)
print(lista_registros)
结果:
[{'nome': 'gopherdata/gophernotes', 'estrelas': 2917},
{'nome': 'gopherdata/gophernotes', 'estrelas': 2917},
{'nome': 'gopherdata/gophernotes', 'estrelas': 2917},
... 100 total
{'nome': 'gopherdata/gophernotes', 'estrelas': 2917},
{'nome': 'gopherdata/gophernotes', 'estrelas': 2917}]
【问题讨论】:
-
请提供预期见MRE - Minimal, Reproducible Example。显示中间结果与预期结果的偏差。我们应该能够将您的代码块粘贴到文件中,运行它并重现您的问题。这也让我们可以在您的上下文中测试任何建议。这段代码不是最小的。您说您的问题只是从另一个列表附加到一个列表,但是您的代码将 JSON、HTTP 请求和其他不相关的开销弄乱了。
标签: python json python-3.x python-requests