Python 'NoneType' 类型尝试访问字典数据时出错



我正在通过Spotify使用Spotify的API,并试图获得曲目的名称。我在Javascript中使用了相当多的API,在尝试做基本上相同的事情时没有遇到任何问题,我在这里遇到了障碍。

基本上,我使用这个端点获取给定播放列表的曲目:https://developer.spotify.com/documentation/web-api/reference/playlists/get-playlists-tracks/,我正在尝试提取曲目的名称。

这将输出给定轨道的"轨道对象":

playlist_items = spotify.playlist_tracks(playlist_nameid[playlist])['items']
for item in playlist_items:
track_object = item['track']

这是上面代码输出的图片

我知道我正在覆盖track_object,我只是将其剥离以进行测试。

如果我尝试track_object = item['track']['name'],我会得到错误

TypeError at /radio/login
'NoneType' object is not subscriptable

为了确保item['track']是一个可下标的对象,我尝试了type(item['track']),结果是{}。在这一点上我很困惑,因为错误似乎告诉我dictionary对象的类型是"none"。如有任何帮助,我们将不胜感激。

playlist_items中的一项为None或item['track']为None。以下可能更适合您:

item.get('track', {}).get('name')

你可以用过滤掉任何项目

for item in playlist_items:
if item is None:
continue

或者您可以使用保护原始提取

item and item.get('track', {}).get('name')

我在@schillingt的帮助下发现了这一点——过滤none项是正确的方法。我不得不过滤曲目对象,而不是过滤播放列表项目。

这将返回播放列表的曲目名称列表:

playlist_items = spotify.playlist_tracks(playlist_nameid[playlist])['items']
title = []
for item in playlist_items:
if item['track'] is None:
continue
else:
title.append(item['track']['name'])

最新更新