python - 如果列表有共同的子列表,如何对列表进行分组?
问题描述
我有一个包含许多子列表的列表。每个子列表有 30 个子子列表。如果它们包含一个相同的子子列表,我如何合并 2 个子列表?
inputdata = [ [[99, 87, 10], [97, 93, 10]], [[97, 93, 10], [212, 271, 10]], [[215,271,10], [500,41,9]]]
outputdata = [[[99, 87, 10], [97, 93, 10], [97, 93, 10], [212, 271, 10]], [[215,271,10], [500,41,9]]]
正如您在上面看到的,最后一个子列表没有被修改为输出数据,因为它的子列表与其他子列表没有相似之处
我的数据:
[[[[99, 87, 10], [97, 93, 10]], [[212, 271, 10], [212, 271, 10]], [[224, 394, 10], [223, 392, 9]], [[394, 178, 10], [399, 184, 10]], [[155, 91, 10], [149, 87, 10]], [[297, 107, 10], [292, 106, 10]], [[406, 52, 10], [406, 52, 10]], [[349, 427, 10], [347, 425, 10]], [[149, 118, 10], [141, 121, 10]], [[184, 199, 10], [184, 200, 10]], [[185, 247, 10], [178, 244, 10]], [[62, 232, 10], [63, 230, 9]], [[63, 71, 10], [64, 75, 10]], [[205, 46, 10], [207, 44, 9]], [[381, 74, 10], [383, 71, 10]], [[255, 389, 10], [254, 389, 9]], [[98, 143, 9], [93, 145, 10]], [[99, 373, 10], [100, 369, 9]], [[55, 341, 10], [51, 339, 10]], [[89, 195, 10], [91, 197, 10]], [[305, 182, 10], [302, 181, 10]], [[263, 255, 9], [262, 263, 10]], [[345, 62, 9], [345, 61, 9]], [[226, 235, 9], [221, 238, 10]], [[242, 142, 9], [245, 142, 10]], [[379, 35, 9], [379, 35, 10]], [[391, 265, 9], [392, 259, 9]], [[205, 151, 9], [211, 146, 10]], [[335, 397, 9], [347, 425, 10]], [[122, 211, 9], [127, 212, 9]]], [[[347, 425, 10], [343, 422, 9]], [[64, 75, 10], [69, 80, 10]], [[399, 184, 10], [403, 187, 10]], [[178, 244, 10], [173, 247, 10]], [[292, 106, 10], [289, 106, 9]], [[379, 35, 10], [383, 40, 9]], [[383, 71, 10], [383, 71, 10]], [[184, 200, 10], [184, 200, 10]], [[212, 271, 10], [212, 269, 9]], [[406, 52, 10], [409, 56, 10]], [[302, 181, 10], [296, 178, 10]], [[149, 87, 10], [148, 87, 10]], [[245, 142, 10], [248, 143, 10]], [[221, 238, 10], [217, 242, 9]], [[93, 145, 10], [91, 145, 10]], [[211, 146, 10], [218, 148, 10]], [[51, 339, 10], [51, 337, 10]], [[223, 392, 9], [223, 392, 10]], [[97, 93, 10], [93, 99, 10]], [[345, 61, 9], [339, 59, 10]], [[63, 230, 9], [64, 224, 10]], [[91, 197, 10], [91, 205, 10]], [[141, 121, 10], [140, 122, 10]], [[262, 263, 10], [261, 263, 10]], [[392, 259, 9], [394, 257, 10]], [[100, 369, 9], [103, 363, 9]], [[207, 44, 9], [207, 45, 10]], [[127, 212, 9], [134, 214, 9]], [[254, 389, 9], [254, 382, 10]]]]
解决方案
我不确定您想要什么,因为您的示例和您的描述在目标方面并不真正匹配,但我认为您希望半径按 (x,y) 对分组。我建议为此使用字典:
your_list=[ [[99, 87, 10], [97, 93, 10]], [[97, 93, 10], [212, 271, 10]]]
d=dict()
for sub_list in your_list:
for sub_sub in sub_list:
if tuple(sub_sub[:2]) in d:
d[tuple(sub_sub[:2])].append(sub_sub[-1])
else:
d[tuple(sub_sub[:2])]=[(sub_sub[-1])]
print(d)
>>>>{(99, 87): [10], (97, 93): [10, 10], (212, 271):[10]}
推荐阅读
- html - 不同客户端窗口大小的 HTML 表大小调整
- php - 如何正确从 xml 读取数组与 json 转换为 php 数组
- python - Python-Mysql:ModuleNotFoundError:没有名为“pymysql”的模块
- c# - 从 MongoDB 获取无类型数据给出“未知鉴别器值”
- java - 多个相同的应用程序和深度链接
- docker - 使用 COPY --FROM 时,在 ppc64 上从 Dockerfile 构建映像失败
- python - python中的WOE和IV表
- excel - VBA - 数据透视表刷新 1004 应用程序未定义错误
- matlab - Simulink 家用热系统作为 AC
- mysql - 尝试添加项目时获取空的sqlite DB和“(sqlite3.OperationalError)没有这样的表:..:”