python - 将 Python 字典附加到列表
问题描述
我正在尝试将 GraphQL 查询的输出作为 JSON 进行迭代,并创建一个包含该信息的 Python 字典(“项目”变量)列表。这是我到目前为止一直在使用的代码:
url = 'https://api.github.com/graphql'
api_token = 'API_TOKEN'
headers = {'Authorization': 'token %s' % api_token}
# Parse Output
r = requests.post(url=url, json={'query': query}, headers=headers)
json_data = json.loads(r.text)
df_data = json_data['data']['user']['pinnedItems']['edges']
data = df_data
i = 0
while i < len(df_data):
for key, value in df_data[i].items():
projects = [
{
'name': value['name'],
'url': value['url']
}
]
i += 1
但是,当我执行此代码并打印输出时projects
,仅捕获第一个对象。有谁知道如何将多个对象添加到列表中?我总共有四个对象。
注意:JSON 基于 GitHub API 的 GraphQL 输出,查询如下:
query {
user(login:"USER") {
pinnedItems(first: 4, types: [REPOSITORY]) {
edges {
node {
... on Repository {
name
shortDescriptionHTML
url
openGraphImageUrl
}
}
}
}
}
}
这是来自 GitHub 的完整 JSON 输出:
{
"data": {
"user": {
"pinnedItems": {
"edges": [
{
"node": {
"name": "TEXT",
"shortDescriptionHTML": "TEXT",
"url": "URL",
"openGraphImageUrl": "URL"
}
},
{
"node": {
"name": "TEXT",
"shortDescriptionHTML": "TEXT",
"url": "URL",
"openGraphImageUrl": "URL"
}
},
{
"node": {
"name": "TEXT",
"shortDescriptionHTML": "TEXT",
"url": "URL",
"openGraphImageUrl": "URL"
}
},
{
"node": {
"name": "TEXT",
"shortDescriptionHTML": "TEXT",
"url": "URL",
"openGraphImageUrl": "URL"
}
}
]
}
}
}
}
谢谢
解决方案
您基本上每次都在创建一个包含一个项目的新列表。要将更多项目附加到同一个列表,您需要使用方法“list.append()”,正如 python_guy_rany 向您展示的那样。
但是,如果您想继续使用 while 循环,请不要忘记将 i+=1 添加到 python_guy_rany 代码中。我宁愿使用 for 循环:
for i in range(len(df_data)):
你可以避免 i=0 和 i+=1 。您也可以使用列表推导,但我认为坚持使用 for 循环更容易理解。
推荐阅读
- javascript - jQuery隐藏所有元素
- php - 在 C:\wamp\bin\php\php7.1.16 C:\wamp\bin\php\php7.1.16 中有 wamp 服务器路径 (c /wamp64) 进入 windows 路径环境变量
- ios - FitBit 中的访问令牌无效
- protractor - 如何使 Protractor 的 browser.wait() 更冗长?
- uwp - CommonStates 不会自动触发
- scala - Scala 高阶函数
- android - 地理围栏通知在android oreo(意图服务)中不起作用
- php - 如何使用 phpunit 测试 laravel 5.4 项目?
- php - 雄辩的子查询是否该行是最新的
- python - Keras 期望 dense_13 有 2 个维度