我有一个嵌套列表,包含514000个列表
[["src_ip","src_port","dst_ip","dst_port"],["src_ip","src_port","dst_ip","dst_port"],
and so on
]
我有一个嵌套列表,包含514000个列表
[["src_ip","src_port","dst_ip","dst_port"],["src_ip","src_port","dst_ip","dst_port"],
and so on
]
一个更快的解决方案是使用set
来跟踪到目前为止已经看到的项目,并将重复项的位置添加到列表中.因为列表是不可散列的,所以可以将它们转换为元组.下面是生成的代码:
seen = set() # Unique items
result = [] # List of duplicate positions
for pos, item in enumerate(lst):
tmp = tuple(item)
if tmp in seen:
result.append(pos)
else:
seen.add(tmp)
如果您想跟踪与找到的重复项关联的唯一项的位置,只需将seen
更改为dict
,将seen.add(tmp)
更改为seen[tmp] = pos
即可.得到的解以线性时间运行(即O(n)
,其中n
是输入lst
的大小).这段代码在我的机器上大约需要250毫秒,列表包含4个短随机字符串的514000个子列表.