Как сгруппировать подсписок, имея такой же индекс? - PullRequest
0 голосов
/ 18 декабря 2018

Это очень сложный вопрос для слов.Я использую Python в программном обеспечении для моделирования Rhinoceros 3D.У меня следующая проблема:

Возьмем, к примеру, у меня следующие данные.

l = [[1,2,3],[3,1.2,4],[1.000,2.0,3.0],[12,3,2],[1,5,3],[5,3,4],[1,6,2.0]]

Я бы хотел сгруппировать все данные с одинаковым z-значением в один список:

поэтому результат должен выглядеть примерно так:

l_2 = [[12,3,2],[1,6,2.0]]
l_3 = [[1,2,3], [1.000,2.0,3.0], [1,5,3]]
l_4 = [[3,1.2,4],[5,3,4]]

Как мне это сделать без использования какого-либо плагина?

Ответы [ 2 ]

0 голосов
/ 18 декабря 2018

Вы можете выполнить итерацию по номеру l и добавить к списку подсписок с помощью ключа значения z:

d = {}
for x, y, z in l:
    d.setdefault(z, []).append([x, y, z])

d становится:

{3: [[1, 2, 3], [1.0, 2.0, 3.0], [1, 5, 3]], 4: [[3, 1.2, 4], [5, 3, 4]], 2: [[12, 3, 2], [1, 6, 2.0]]}
0 голосов
/ 18 декабря 2018

Понимание списка с фильтрацией осуществляется одним способом:

l_2 = [x for x in l if x[2] == 2]
l_3 = [x for x in l if x[2] == 3]
l_4 = [x for x in l if x[2] == 4]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...