![](/img/trans.png)
[英]TypeError: 'NoneType' object is not subscriptable dictionary python
[英]Python 'NoneType' TypeError when trying to access dictionary data
我正在通过 Spotipy 使用 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'])
,输出是{}
。 在这一点上我很困惑,因为错误似乎告诉我字典对象的类型为“无”。 任何帮助将不胜感激。
playlist_items
中的item['track']
是 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 的帮助下想通了 - 过滤无项目是正确的方法。 我不得不过滤曲目对象,而不是过滤播放列表项。
这将返回播放列表的曲目名称列表:
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'])
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.