Если вы создаете словарь, сопоставляющий индексы со списками символов, вы можете получить обе части своего ответа:
from collections import defaultdict
d = defaultdict(list)
arr = [
['a','b','c','d','e'],
['b','c','d','e','f'],
['z','t','c','d','w']
]
for ind, l in enumerate(arr):
for c in l:
d[c].append(ind)
print(d)
d
будет словарь, подобный:
defaultdict(list,
{'a': [0],
'b': [0, 1],
'c': [0, 1, 2],
'd': [0, 1, 2],
'e': [0, 1],
'f': [1],
'z': [2],
't': [2],
'w': [2]})
Элементы, которые появляются в более чем одном списке, можно найти по следующему адресу:
[k for k, v in d.items() if len(v) > 1]
# ['b', 'c', 'd', 'e']
Вы можете индексировать непосредственно в dict, чтобы найти индексы, частью которых они являются:
d['e']
# [0, 1]