Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/354.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python';非类型';尝试访问字典数据时出现TypeError_Python_Django_Spotify_Nonetype_Spotipy - Fatal编程技术网

Python';非类型';尝试访问字典数据时出现TypeError

Python';非类型';尝试访问字典数据时出现TypeError,python,django,spotify,nonetype,spotipy,Python,Django,Spotify,Nonetype,Spotipy,我正在通过Spotipy使用Spotify的API,并试图获得曲目的名称。我在Javascript中使用了相当多的API,在尝试做基本相同的事情时没有遇到任何问题,我在这里遇到了一堵墙 基本上,我使用这个端点获取给定播放列表的曲目,并尝试提取曲目的名称 这将输出给定轨迹的“轨迹对象”: playlist_items = spotify.playlist_tracks(playlist_nameid[playlist])['items'] for item in playlist_

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

基本上,我使用这个端点获取给定播放列表的曲目,并尝试提取曲目的名称

这将输出给定轨迹的“轨迹对象”:

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

我知道我正在覆盖track_对象,我刚刚将其剥离以进行测试

如果我尝试
track\u object=item['track']['name']
我会得到错误

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

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

播放列表中的项目之一\u items为无或
项目['track']
为无。以下可能更适合您:

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'])

这给了我一个错误
AttributeError at/radio/login'NoneType'对象没有属性'get'
,虽然如果我删除
.get('name')
,它会给我track对象。那么肯定是其中一个实例是none。我尝试了过滤none项和保护原始获取,并同时执行这两个操作,它仍然给出了同样的错误。这就是我拥有的:
playlist\u items=spotify.playlist\u曲目(playlist\u nameid[playlist])['items']用于播放列表中的项目\u items:如果项目为无:继续跟踪\u object=item和item.get('track',{}).get('name')