У меня есть два списка, состоящих из подсписков, что-то вроде:
conopt = [["element1","element2"],["bla"]]
mat = [["element1","elementA"],["bla & etc"]]
Из этих данных я хочу заполнить матрицу размерами len (conopt) x len (mat). Поскольку python по умолчанию не имеет матрицы, я буду использовать другой список с подсписками:
finalmat = [ ["-","X",...,"X"],[...]]
Я хочу, чтобы у finalmat
была буква "X", где есть полное совпадение (когда подэлемент conopt соответствует подэлементу mat) и "-" там, где его нет. Однако я забочусь только о первом полном совпадении для каждого подсписка. Если в подсписке conopt есть 1 или более совпадений в подсписке mat, результат должен быть таким же, только один «X».
Я пробовал следующее:
for i in mat:
for j in conopt:
for item in j:
if item in i:
finalmat[mat.index(i)][conopt.index(j)] = "X"
Однако результат не верный, потому что я вручную проверил некоторые данные, и он не дает правильного результата.
некоторая дополнительная (менее важная) информация:
строковые элементы состоят из букв, цифр, пробелов (только пробелы между словами) и "# & "символы.
в подсписках есть произвольное количество строк.
эти данные получены из файла Excel. Я вручную извлек и изменил его так, чтобы он соответствовал синтаксису python.
вывод (finalmat) возвращается к первенству. Я делаю этот шаг вручную, потому что это одна задача, и я не хочу усложнять свой код еще больше.