выбор повторяющихся значений из списка списков

есть список списков, он же и является входными данными

list1 = [
['a','b','b','c'],
['a','v','c'],
['a','c'],
['f','a','g','v']
]

нужна функция, которая отфильтрует список списков так, чтобы оставить только те значения в списках, которые повторяются хотя бы 1 раз в другом списке.

таким образом, выходные данные:

   list1 = [
    ['a','c'],
    ['a','v','c'],
    ['a','c'],
    ['a','v']
    ]

Буду очень рад помощи!!!


Ответы (1 шт):

Автор решения: Oopss
l = [
    ['a', 'b', 'b', 'c'],
    ['a', 'v', 'c'],
    ['a', 'c'],
    ['f', 'a', 'g', 'v']
]

r = {}
for i in l:
    for j in set(i):
        r[j] = r[j] + 1 if j in r else 1 # Считаем количество элементов во всех списках

l1=[]
for i in l:
    l1.append([j for j in i if r[j]>1]) # Если количество элементов больше одного, сохраняем
print(l1)

[['a', 'c'], ['a', 'v', 'c'], ['a', 'c'], ['a', 'v']]
→ Ссылка