如何删除字典值嵌套列表中元素差≤10的子列表
实现方案
你可以通过Python的字典+列表推导式快速完成过滤,核心逻辑是校验每个子列表的元素差值:
完整代码
# 原始输入数据 data = {323: [[639, 646]], 325: [[1491, 1507]], 332: [[639, 647], [823, 833], [1274, 1298]], 334: [[640, 646]], 335: [[822, 834]]} # 过滤处理 output_data = { k: [sub for sub in v if abs(sub[1] - sub[0]) > 10] for k, v in data.items() } # 输出验证 print(output_data)
输出结果
运行上述代码后得到的结果和你的预期完全一致:
{323: [], 325: [[1491, 1507]], 332: [[1274, 1298]], 334: [], 335: [[822, 834]]}
逻辑说明
- 外层字典推导式遍历原字典的所有键值对,保持键名不变,只处理对应的值列表
- 内层列表推导式逐个校验值列表里的子列表:计算两个元素的差值绝对值,仅保留差值大于10的子列表
- 如果你的业务场景中子列表一定是首元素小于尾元素,也可以去掉
abs()直接用sub[1] - sub[0] > 10,性能差异可以忽略
内容的提问来源于stack exchange,提问作者Taarun Srinivas
相关产品推荐
相关产品推荐

