2 回答

TA贡献1993条经验 获得超5个赞
尝试这样的事情:
ids = [item["id"] for item in json_data["playlists"]["items"]]
这称为列表理解。
您想要遍历键"items"
内的所有内容"playlists"
。
您可以访问该项目列表:
json_data["playlists"]["items"]
然后迭代项目中的每个项目:
for item in json_data["playlists"]["items"]
然后你访问"id"
每个项目的:
item["id"]

TA贡献1712条经验 获得超3个赞
您可以使用对象的键索引对象。我可以看到对象中有两个地方存在 id。要检索这两个 ID 并将它们存储在字典格式中,您可以使用以下方法 -
_json = {
'playlists': {
'href': 'https://api.spotify.com/v1/search?query=rewind-The%25&type=playlist&offset=0&limit=20',
'items': [{
'collaborative': False,
'description': 'Remember what you listened to in 2010? Rewind and rediscover your favorites.',
'external_urls': {
'spotify': 'https://open.spotify.com/playlist/37i9dQZF1DXc6IFF23C9jj'
},
'href': 'https://api.spotify.com/v1/playlists/37i9dQZF1DXc6IFF23C9jj',
'id': '37i9dQZF1DXc6IFF23C9jj',
'images': [{
'height': None,
'url': 'https://i.scdn.co/image/ab67706f0000000327ba1078080355421d1a49e2',
'width': None
}],
'name': 'Rewind - The Sound of 2010',
'owner': {
'display_name': 'Spotify',
'external_urls': {
'spotify': 'https://open.spotify.com/user/spotify'
},
'href': 'https://api.spotify.com/v1/users/spotify',
'id': 'spotify',
'type': 'user',
'uri': 'spotify:user:spotify'
},
'primary_color': None,
'public': None,
'snapshot_id': 'MTU5NTUzMTE1OSwwMDAwMDAwMGQ0MWQ4Y2Q5OGYwMGIyMDRlOTgwMDk5OGVjZjg0Mjdl',
'tracks': {
'href': 'https://api.spotify.com/v1/playlists/37i9dQZF1DXc6IFF23C9jj/tracks',
'total': 100
},
'type': 'playlist',
'uri': 'spotify:playlist:37i9dQZF1DXc6IFF23C9jj'
}, ]
}
}
res_dict = {'id':[items['id'], items['owner']['id']] for items in _json['playlists']['items']}
print(res_dict)
输出 :
{'id': ['37i9dQZF1DXc6IFF23C9jj', 'spotify']}
如果您不需要 json 对象中存在的第二个 id,您可以将其从 res_dict 上方删除并将其修改为 -
res_dict = {'id':items['id'] for items in _json['playlists']['items']}
这只会获取items数组中存在的 id 作为任何元素的键,而不是任何进一步嵌套的 id(比如 items[i]->owner->id 不会像第一个案例那样出现在最终资源中)。
添加回答
举报