我有一个嵌套列表,包含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个子列表.

Python相关问答推荐

仅使用2种 colored颜色 创建热图

按日期和组增量计算总价值

Flask:如何在完整路由代码执行之前返回验证

如何在telegram 机器人中发送音频?

telegram 机器人API setMyName不起作用

如何使用PyTest根据self 模拟具有副作用的属性

如何使用Selenium访问svg对象内部的元素

Python -根据另一个数据框中的列编辑和替换数据框中的列值

Django mysql图标不适用于小 case

类型错误:输入类型不支持ufuncisnan-在执行Mann-Whitney U测试时[SOLVED]

为什么符号没有按顺序添加?

如何在solve()之后获得症状上的等式的值

Python解析整数格式说明符的规则?

如何在Polars中从列表中的所有 struct 中 Select 字段?

形状弃用警告与组合多边形和多边形如何解决

mypy无法推断类型参数.List和Iterable的区别

合并帧,但不按合并键排序

为什么np. exp(1000)给出溢出警告,而np. exp(—100000)没有给出下溢警告?

可以bcrypts AES—256 GCM加密损坏ZIP文件吗?

* 动态地 * 修饰Python中的递归函数