尝试访问字典数据时发生Python'NoneType'TypeError

时间:2020-03-02 19:58:14

标签: python django spotify nonetype spotipy

我正在通过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']

Here's a picture of the output of the above code

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

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

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

为确保item['track']是可下标对象,我尝试了type(item['track']),输出为{}。在这一点上我很困惑,因为错误似乎告诉我字典对象的类型为“ none”。任何帮助将不胜感激。

2 个答案:

答案 0 :(得分:0)

Launch("https://play.google.com/store/apps/details?id=com.ssaurel.nfcreader&hl=en") 中的一项为None或playlist_items为None。以下内容可能更适合您:

item['track']

您可以使用以下方法过滤掉所有项目:

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

或者您可以使用以下方法保护原始抓取内容:

for item in playlist_items:
    if item is None:
        continue

答案 1 :(得分:0)

我在@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'])