У меня есть два python списка строк, которые я хотел бы сравнить. Первый - это мой основной список, содержащий серию длинных кодов. Второй - это список неполных строк.
input:
list1 = ['fda3232', 'fcg3224', 'kgj5543', '3323fda9832', 'ffz3392', '221gks9483', 'mnx8385', 'aaz9323', '332kgj4323']
list2 = ['fda', 'kgj', 'mxx', 'mnx']
Желаемый результат - маска списка 1, заполненная подстроками из списка два. Если совпадений не найдено, list3 может вернуть 0, np.nan, '-' или аналогичные. Другими словами, я ищу следующее:
output:
list3 = ['fda', np.nan, 'kgj', 'fda', np.nan, np.nan, 'mnx', np.nan, 'kgj']
С помощью людей из другого треда я смог приблизиться. Однако эти результаты возвращают значения в списке 1, но я хотел бы, чтобы мой результат возвращал соответствующую подстроку из списка 2.
solution 1:
list3 = [x if any(y in x for y in list2) else np.nan for x in list1]
solution 2:
list3 = np.where([np.sum(np.char.find(x, sub=list2)+1) for x in list1], list1, np.NaN)