Python解析Spotify API返回JSON时提取曲目ID出错如何解决?
问题根因
- 遍历字典时的循环变量取到的是键名而非值:你的代码中
for attribute in track['track']遍历的是track字典的所有键,当匹配到键为id时,你把attribute(也就是字符串"id")追加到了列表中,而非id对应的实际ID值。 - 逻辑冗余:不需要遍历所有属性查找
id键,Python字典支持直接通过键名取值,多余的循环会增加不必要的性能开销。
修复后的代码
def getLikedTrackIds(session): url = 'https://api.spotify.com/v1/me/tracks' payload = makeGetRequest(session, url) if payload is None: return None liked_tracks_ids = [] for item in payload['items']: # 直接通过嵌套键获取曲目ID值 track_id = item['track']['id'] app.logger.info(f"\n\nTrack ID: {track_id}") liked_tracks_ids.append(track_id) return liked_tracks_ids
可选优化(异常兼容)
如果接口返回存在字段缺失的情况,可以增加判空逻辑避免代码抛出KeyError异常:
def getLikedTrackIds(session): url = 'https://api.spotify.com/v1/me/tracks' payload = makeGetRequest(session, url) if payload is None or 'items' not in payload: return None liked_tracks_ids = [] for item in payload['items']: track = item.get('track') if not track: continue track_id = track.get('id') if track_id: liked_tracks_ids.append(track_id) return liked_tracks_ids
内容的提问来源于stack exchange,提问作者wisenickel
相关产品推荐
相关产品推荐

