保留一个列表以防止Python中的重复效率

Luc*_*man 0 python list

我在使用包含一些重复ID的csv数据源时遇到了一些麻烦.然而,最终结果应该只有ID一次.因此,我们决定只采用我们看到的第一个实例并忽略任何其他实例.

目前我的代码是这样的:

id_list = list()
for item in datasource: 
    if item[0] not in id_list:
        #process
        id_list.append(item[0])
Run Code Online (Sandbox Code Playgroud)

问题是当列表增长时,性能会下降.我想知道是否有更有效的方法来跟踪已处理的ID?

the*_*eye 5

使用set对象,保证集不具有重复项并提供快速成员资格测试.你可以set像这样使用

id_list = set()
for item in datasource: 
    if item[0] not in id_list:
        # process
        id_list.add(item[0])
Run Code Online (Sandbox Code Playgroud)

这将更好,因为set对象中的查找将在恒定时间内发生,而不是列表中线性时间查找.