У меня есть список, каждый из элементов которого может иметь разное количество элементов.В lst1 каждый элемент списка имеет 3 элемента, тогда как в lst2 каждый элемент списка имеет 2 элемента.
lst1=[([{'s1'}, 30], [{'s2'}, 28], [{'s3'}, 28]), ([{'s1'}, 30], [{'s2'}, 28], [{'s4'}, 30])]
lst2=[([{'s1'}, 30], [{'s2'}, 28]), ([{'s1'}, 30], [{'s4'}, 22])]
Как правило, число элементов списка не является фиксированным, и каждый элемент списка будет содержать 1,2, 3,4,5 или 6 элементов внутри себя (в lst1 каждый элемент списка содержит 3 элемента).Вывод, который должен быть сгенерирован с использованием ls1, выглядит следующим образом:
[{'s1','s2','s3'},{'s1','s2','s4'}]
Хотя для lst2 ожидается следующий результат:
[{'s1','s2'},{'s1','s4'}]
Следующий код работает только для lst2:
[x[0][0]|x[1][0] for x in lst2]
На самом деле, проблема заключается в преобразовании этой части кода 'x [0] [0] | x [1] [0]' в динамическую.Если у каждого элемента списка есть 2 подпункта, 'x [0] [0] | x [1] [0]' работает нормально.Хотя, если каждый элемент списка имеет 3 подпункта, мы должны иметь '' x [0] [0] | x [1] [0] | x [2] [0] 'и так далее.
Я знаю, как генерировать вывод, используя несколько циклов for.Но я ценю, если у кого-то есть лучшая идея для реализации вышеупомянутого кода, через встроенный цикл или другие более быстрые способы.