按项目获取列表中的唯一条目

时间:2016-10-10 01:00:45

标签: python list set

这似乎是一个相当简单的问题,但我似乎无法找到一种有效的方法。我有一个这样的列表列表:

list = [['abc','def','123'],['abc','xyz','123'],['ghi','jqk','456']]

我想通过每个子列表中的第三项(' id')获取唯一条目列表,即最终结果应为

unique_entries = [['abc','def','123'],['ghi','jqk','456']]

最有效的方法是什么?我知道我可以使用set来获取唯一ID,然后再循环遍历整个列表。但是,我的列表中有超过200万个条目,这需要太长时间。感谢您提供的任何指针!谢谢。

2 个答案:

答案 0 :(得分:4)

如何做到这一点:创建一个set来跟踪已经看过的ID,并且只在不存在id的地方附加子列表。

l = [['abc','def','123'],['abc','xyz','123'],['ghi','jqk','456']]

seen = set()
new_list = []

for sl in l:
    if sl[2] not in seen:
        new_list.append(sl)
        seen.add(sl[2])

print new_list

结果:

[['abc', 'def', '123'], ['ghi', 'jqk', '456']]

答案 1 :(得分:0)

一种方法是创建内循环。在第一个循环中,你从1开始迭代外部列表,之前你需要创建一个arraylist,它将添加第一个元素,在内部循环内部从索引0开始,你只检查第三个元素是否位于arraylist当前持有元素中的第三个元素,如果没有找到,那么在另一个范围在外部循环之外的arraylist中你将添加这个元素,否则你将使用" continue"关键词。最后,您将打印出最后创建的arraylist。