我有一个来自Spotify的曲目信息列表:

track_list = [[track_id1, track_title1, track_popularity1],[track_id2, track_title2, track_popularity2]

每个Track_id都是唯一的.有没有一种方法可以在每次迭代整个列表的情况下找到与Track_id匹配的条目?

def find_track(track_id, track_list):
    for track in track_list:
        if track[0] = track_id:
            return track
            break

    return('Not Found')

我知道我可以通过使用for循环获得所需的物品,但我怀疑还有一种更有效的方法尚未发现.

推荐答案

为此,最有效的方法是使用字典,其中关键点是track_id,值是相应的轨道信息.这允许恒定时间的查找(O(1)复杂性),这比迭代整个列表(O(n)复杂性)要快得多.

下面是一个例子:

def list_to_dict(track_list):
    return {track[0]: track for track in track_list}

def find_track(track_id, track_dict):
    return track_dict.get(track_id, 'Not Found')

# Example usage:
track_list = [
    ['track_id1', 'track_title1', 'track_popularity1'],
    ['track_id2', 'track_title2', 'track_popularity2']
]

track_dict = list_to_dict(track_list)
track = find_track('track_id1', track_dict)
print(track)

Python相关问答推荐

为什么我的代码会进入无限循环?

如何将自动创建的代码转换为类而不是字符串?

Python在通过Inbox调用时给出不同的响应

如何在Power Query中按名称和时间总和进行分组

Python中使用Delivercio进行多个请求

无法导入已安装的模块

如何修复使用turtle和tkinter制作的绘画应用程序的撤销功能

返回nxon矩阵的diag元素,而不使用for循环

将DF中的名称与另一DF拆分并匹配并返回匹配的公司

根据不同列的值在收件箱中移动数据

ModuleNotFound错误:没有名为Crypto Windows 11、Python 3.11.6的模块

Python中的嵌套Ruby哈希

为什么这个带有List输入的简单numba函数这么慢

OR—Tools中CP—SAT求解器的IntVar设置值

将tdqm与cx.Oracle查询集成

在Python中动态计算范围

如何根据一列的值有条件地 Select 前N个组,然后按两列分组?

用渐近模计算含符号的矩阵乘法

如何使用使用来自其他列的值的公式更新一个rabrame列?

如何创建引用列表并分配值的Systemrame列