如何将此列表用作此函数的参数?

时间:2019-05-04 01:53:32

标签: python-3.x spotify spotipy

我是Python的新手,正在使用它与Spotipy编写Spotify应用。基本上,我有一个名为topTracks的音轨字典。我可以通过以下方式访问曲目及其名称/ ID和内容:

topSongs['items'][0]
topSongs['items'][3]['id']
topSongs['items'][5]['name']

所以我要使用一个函数:

recommendations(seed_artists=None, seed_genres=None, seed_tracks=None, limit=20, country=None, **kwargs)

通过此功能,我尝试使用seed_tracks,它需要一个轨道ID列表。因此,理想情况下,我想输入topSongs ['items'] [0] ['id'],topSongs ['items'] [1] ['id'],topSongs ['items'] [2] ['id']等等。我该怎么做?我已经读过*运算符,但不确定如何使用它,或者它是否适用于此。

1 个答案:

答案 0 :(得分:3)

您可以尝试如下所示的操作。

  

ids = [item["id"] for item in topSongs["items"]]

     

在这里,我刚刚形成了一个简单的例子。

>>> topSongs = {
...     "items": [
...         {
...             "id": 1,
...             "name": "Alejandro"
...         },
...         {
...             "id": 22,
...             "name": "Waiting for the rights"
...         }
...     ]
... }
>>> 
>>> seed_tracks = [item["id"] for item in topSongs["items"]]
>>> 
>>> seed_tracks
[1, 22]
>>> 

关于使用*运算符的提示»

在这种情况下,使用

*运算符,但为此,您将需要形成一个包含该函数需要的数据列表的列表/元组。

  

您必须像上面的seed_tracks那样形成所有变量。

data = [seed_artists, seed_genres, seed_tracks, limit, country]   

最后

recommendations(*data)

关于使用**运算符的提示»

如果您愿意使用**运算符,则数据将会类似于

data = {"seed_artists": seed_artists, "seed_genres": seed_genres, "seed_tracks": seed_tracks, "limit": limit, "country": country} 

最后,

recommendations(**data)