удалить элементы из одного списка python на основе шаблона - PullRequest
0 голосов
/ 11 марта 2020

Я посетил Удаление подсписков из списка списков , но это не сработало для моего случая, когда я расширил его для своего набора данных. Отсюда отправляем новый вопрос.

list1=[['A,C,D', 'Y', 'hello'],
['A,B,D', 'Y', 'hello'],
['B,C,D', 'Y', 'hello'],
['A,B,C,D', 'Y', 'hello'],
['A', 'Z', 'hello'],
['A,C', 'Z', 'hello'],
['B,C', 'Z', 'hello'],
['A,C', 'Z', 'hello'],
['A,B,C', 'Z', 'hello'],
['H,I,J,K', 'Z', 'hello'],
['H,K', 'Z', 'hello'],
['H,L', 'Z', 'hello'],
['I,J,K,L', 'Z', 'hello'],
['H,I,J,K,L', 'Z', 'hello'],
['B,C,D','Z','hi'],
['A,D,C,B','Z','hi'],
['E,F,G,H','T','welcome'],
['A,E,H','T','welcome']]

Я хочу удалить несколько элементов и разместить желаемый результат ниже:

**Output**
[['A,B,C,D', 'Y', 'hello'],
 ['A,B,C', 'Z', 'hello'],
 ['H,I,J,K,L', 'Z', 'hello'],
 ['A,D,C,B','Z','hi'],
 ['E,F,G,H','T','welcome']]

Я пробовал с кодом ниже:

sets = [set(l) for l in lists]
new_list = [l for l,s in zip(lists, sets) if not any(s < other for other in sets)]

1 Ответ

0 голосов
/ 11 марта 2020

Глядя на ваш ввод и желаемый вывод, кажется, что вы хотите разделить первый элемент каждого списка на ",". В данный момент они представляют собой строки, разделенные запятыми, и поэтому подмножество logi c к ним не относится. Так что вы могли бы сделать:

sets = [set(l[0].split(',')) | set(l[1:]) for l in lists]
...