对列表列表使用枚举 (json)
Using enumerate for a list of lists (json)
我正在用 python 看 Spotify 音乐。至今未能在网上找到答案。我想从 API(2000 首歌曲)中检索到的每首歌曲中获取信息。每首歌的歌手我都有了,就是下面一长串json:
print(artist):
#This is the output:
[[{'track': {'album': {'artists': [{'external_urls': {'spotify': 'https://open.spotify.com/artist/1uiEZYehlNivdK3iQyAbye'},
'href': 'https://api.spotify.com/v1/artists/1uiEZYehlNivdK3iQyAbye',
'id': '1uiEZYehlNivdK3iQyAbye',
'name': 'Tom Misch',
'type': 'artist',
'uri': 'spotify:artist:1uiEZYehlNivdK3iQyAbye'},
{'external_urls': {'spotify': 'https://open.spotify.com/artist/2rspptKP0lPBdlJJAJHqht'},
'href': 'https://api.spotify.com/v1/artists/2rspptKP0lPBdlJJAJHqht',
'id': '2rspptKP0lPBdlJJAJHqht',
'name': 'Yussef Dayes',
'type': 'artist',
'uri': 'spotify:artist:2rspptKP0lPBdlJJAJHqht'}]}}},
# and so on
由于 artist 变量是列表和字典的列表,当我打印 artist 的长度时,我得到 20:
len(artist)
20
但是,在 artist 变量的每个元素中,有 100 个项目:
len(artist[0])
100
我想遍历 artist 中的所有 2000 个项目,并将它们添加到一个列表中。到目前为止,我的代码非常笨拙:
artist_list = []
i=0
while i<100:
artist_list.append(artist[0][i]["track"]["album"]["artists"][0]["name"])
artist_list.append(artist[1][i]["track"]["album"]["artists"][0]["name"])
artist_list.append(artist[2][i]["track"]["album"]["artists"][0]["name"])
artist_list.append(artist[3][i]["track"]["album"]["artists"][0]["name"])
artist_list.append(artist[4][i]["track"]["album"]["artists"][0]["name"])
artist_list.append(artist[5][i]["track"]["album"]["artists"][0]["name"])
artist_list.append(artist[6][i]["track"]["album"]["artists"][0]["name"])
artist_list.append(artist[7][i]["track"]["album"]["artists"][0]["name"])
artist_list.append(artist[8][i]["track"]["album"]["artists"][0]["name"])
artist_list.append(artist[9][i]["track"]["album"]["artists"][0]["name"])
artist_list.append(artist[10][i]["track"]["album"]["artists"][0]["name"])
artist_list.append(artist[11][i]["track"]["album"]["artists"][0]["name"])
artist_list.append(artist[12][i]["track"]["album"]["artists"][0]["name"])
artist_list.append(artist[13][i]["track"]["album"]["artists"][0]["name"])
artist_list.append(artist[14][i]["track"]["album"]["artists"][0]["name"])
artist_list.append(artist[15][i]["track"]["album"]["artists"][0]["name"])
artist_list.append(artist[16][i]["track"]["album"]["artists"][0]["name"])
artist_list.append(artist[17][i]["track"]["album"]["artists"][0]["name"])
i+=1
缩短这段时间的最佳方法是什么?我试过使用 enumerate 但不太清楚该怎么做。任何帮助将不胜感激!
您可以使用双 for 循环实现此目的:
artist_list = []
for a in artist:
for b in a:
artist_list.append(b["track"]["album"]["artists"][0]["name"])
然而,使用 python 列表理解更 pythonic(和高效):
artist_list = [b["track"]["album"]["artists"][0]["name"] for a in artist for b in a]
我正在用 python 看 Spotify 音乐。至今未能在网上找到答案。我想从 API(2000 首歌曲)中检索到的每首歌曲中获取信息。每首歌的歌手我都有了,就是下面一长串json:
print(artist):
#This is the output:
[[{'track': {'album': {'artists': [{'external_urls': {'spotify': 'https://open.spotify.com/artist/1uiEZYehlNivdK3iQyAbye'},
'href': 'https://api.spotify.com/v1/artists/1uiEZYehlNivdK3iQyAbye',
'id': '1uiEZYehlNivdK3iQyAbye',
'name': 'Tom Misch',
'type': 'artist',
'uri': 'spotify:artist:1uiEZYehlNivdK3iQyAbye'},
{'external_urls': {'spotify': 'https://open.spotify.com/artist/2rspptKP0lPBdlJJAJHqht'},
'href': 'https://api.spotify.com/v1/artists/2rspptKP0lPBdlJJAJHqht',
'id': '2rspptKP0lPBdlJJAJHqht',
'name': 'Yussef Dayes',
'type': 'artist',
'uri': 'spotify:artist:2rspptKP0lPBdlJJAJHqht'}]}}},
# and so on
由于 artist 变量是列表和字典的列表,当我打印 artist 的长度时,我得到 20:
len(artist)
20
但是,在 artist 变量的每个元素中,有 100 个项目:
len(artist[0])
100
我想遍历 artist 中的所有 2000 个项目,并将它们添加到一个列表中。到目前为止,我的代码非常笨拙:
artist_list = []
i=0
while i<100:
artist_list.append(artist[0][i]["track"]["album"]["artists"][0]["name"])
artist_list.append(artist[1][i]["track"]["album"]["artists"][0]["name"])
artist_list.append(artist[2][i]["track"]["album"]["artists"][0]["name"])
artist_list.append(artist[3][i]["track"]["album"]["artists"][0]["name"])
artist_list.append(artist[4][i]["track"]["album"]["artists"][0]["name"])
artist_list.append(artist[5][i]["track"]["album"]["artists"][0]["name"])
artist_list.append(artist[6][i]["track"]["album"]["artists"][0]["name"])
artist_list.append(artist[7][i]["track"]["album"]["artists"][0]["name"])
artist_list.append(artist[8][i]["track"]["album"]["artists"][0]["name"])
artist_list.append(artist[9][i]["track"]["album"]["artists"][0]["name"])
artist_list.append(artist[10][i]["track"]["album"]["artists"][0]["name"])
artist_list.append(artist[11][i]["track"]["album"]["artists"][0]["name"])
artist_list.append(artist[12][i]["track"]["album"]["artists"][0]["name"])
artist_list.append(artist[13][i]["track"]["album"]["artists"][0]["name"])
artist_list.append(artist[14][i]["track"]["album"]["artists"][0]["name"])
artist_list.append(artist[15][i]["track"]["album"]["artists"][0]["name"])
artist_list.append(artist[16][i]["track"]["album"]["artists"][0]["name"])
artist_list.append(artist[17][i]["track"]["album"]["artists"][0]["name"])
i+=1
缩短这段时间的最佳方法是什么?我试过使用 enumerate 但不太清楚该怎么做。任何帮助将不胜感激!
您可以使用双 for 循环实现此目的:
artist_list = []
for a in artist:
for b in a:
artist_list.append(b["track"]["album"]["artists"][0]["name"])
然而,使用 python 列表理解更 pythonic(和高效):
artist_list = [b["track"]["album"]["artists"][0]["name"] for a in artist for b in a]