如何无需遍历列表查找Spotify唯一track_id对应的曲目信息?
高效查找Spotify曲目ID对应的条目
当然有更高效的方法!你现在用的遍历列表方式,每次查找都要从头扫到目标位置,数据量小的时候没感觉,一旦曲目多到上千上万条,效率会直线下降。
核心思路是把列表转换成字典,因为字典的键值对查找是O(1)时间复杂度,不用遍历整个集合就能直接定位。
第一步:把曲目列表转成字典
用字典推导式就能快速转换,把track_id作为字典的key,整个曲目信息作为value:
# 转换列表为字典 track_dict = {track[0]: track for track in track_list}
如果只需要标题和流行度,也可以只存这两个值:
track_dict = {track[0]: (track[1], track[2]) for track in track_list}
第二步:用字典快速查找
转换完成后,查找就变得超简单,直接用字典的get方法(还能指定找不到时的默认返回值):
def find_track(track_id, track_dict): return track_dict.get(track_id, 'Not Found')
顺便纠正你原代码的小问题
- 条件判断里是
==不是=,你写的if track[0] = track_id会触发语法错误 return track之后的break根本不会执行,因为return已经直接跳出函数了
另外要注意:字典只需要转换一次,之后每次查找都复用这个字典就行,不用重复转换,这样才能最大化效率。
内容的提问来源于stack exchange,提问作者EmKnird
相关产品推荐
相关产品推荐

