Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如果列表有公共子列表,如何对列表进行分组?_Python_List_Group By - Fatal编程技术网

Python 如果列表有公共子列表,如何对列表进行分组?

Python 如果列表有公共子列表,如何对列表进行分组?,python,list,group-by,Python,List,Group By,我有一个包含许多子列表的列表。每个子列表有30个子列表。 如果两个子列表包含一个相同的子列表,如何合并它们 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], [50

我有一个包含许多子列表的列表。每个子列表有30个子列表。 如果两个子列表包含一个相同的子列表,如何合并它们

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]}

很抱歉解释得不好,但我真的需要像我的示例中那样的精确输出。如果两个子列表有一个公共子列表,那么我们合并它们,但这根本不是示例输出的内容。这只是一个列表列表,而不是列表列表。它已成为列表列表,因为一旦我们找到一个相同的子发布者,我们将其子列表合并到其相同子发布者的子列表中。请给出一个更深入的示例。