繁体   English   中英

尝试访问字典数据时出现 Python 'NoneType' TypeError

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM