You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python如何筛选二维列表中第二列相同且第三列绝对值相等的元素

最优实现方案

推荐使用分组统计法,时间复杂度仅为O(n),数据量越大相比两两比对的O(n²)方案优势越明显。核心逻辑是用(第二列值, 第三列绝对值)作为唯一key对所有元素分组,最终仅保留元素数量≥2的分组内容即可。

代码实现(无需额外依赖)

d = [['Test1', '123456', '5000'],
     ['Test2', '123456', '-5000'],
     ['Test3', '123457', '15000'],
     ['Test4', '123458', '10000'],
     ['Test5', '123459', '10000'],
     ['Test6', '123459', '-15000']]

groups = {}
for item in d:
    # 构造分组key:第二列原值 + 第三列转整数后的绝对值
    key = (item[1], abs(int(item[2])))
    groups.setdefault(key, []).append(item)

# 收集所有符合条件的元素
result = []
for group in groups.values():
    if len(group) >= 2:
        result.extend(group)

print(result)

运行输出和你预期的结果完全一致:

[['Test1', '123456', '5000'], ['Test2', '123456', '-5000']]

如果习惯用标准库简化代码,也可以用collections.defaultdict实现分组,逻辑完全相同:

from collections import defaultdict

groups = defaultdict(list)
for item in d:
    key = (item[1], abs(int(item[2])))
    groups[key].append(item)

result = [item for g in groups.values() if len(g)>=2 for item in g]

内容的提问来源于stack exchange,提问作者スーパーマン

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.25 12:06:02