Как группировать списки, если у них есть общий подсписок? - PullRequest
0 голосов
/ 15 апреля 2019

У меня есть список, который содержит много подсписков.Каждый подсписок имеет 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]]]]

1 Ответ

0 голосов
/ 15 апреля 2019

Я не совсем уверен, что вы хотите, так как ваш пример и ваше описание на самом деле не совпадают с точки зрения того, какова цель, но я думаю, что вы хотите, чтобы радиусы были сгруппированы по парам (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]}
...