这似乎是一个相当简单的问题,但我似乎无法找到一种有效的方法。我有一个这样的列表列表:
list = [['abc','def','123'],['abc','xyz','123'],['ghi','jqk','456']]
我想通过每个子列表中的第三项(' id')获取唯一条目列表,即最终结果应为
unique_entries = [['abc','def','123'],['ghi','jqk','456']]
最有效的方法是什么?我知道我可以使用set来获取唯一ID,然后再循环遍历整个列表。但是,我的列表中有超过200万个条目,这需要太长时间。感谢您提供的任何指针!谢谢。
答案 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。