@Yrets169

Как сравнить два списка с частичным совпадением элементов?

Добрый день как можно сравнить два списка с частичным совпадением по элементам?

пытаюсь сделать так
files = ['новая папка', 'games', 'install', 'фото', 'музыка']
search = ['папка', 'фотки', 'музло']
result=list(set(search) & set(files))
print(result)

результат будет если в обеих списках будут одинаковые элементы

----------------------------------------------------------------------------------------------------------------------------------------

ожидаемый результат по частичному совпадению элементов между files и search:
['новая папка', 'фото', 'музыка']
  • Вопрос задан
  • 821 просмотр
Решения вопроса 2
будет криво и не совсем корректно, но простого решения тут нет, надо брать и искать по семантическое сравнение

import re

files = ['новая папка', 'games', 'install', 'фото', 'музыка']
search = ['папка', 'фотки', 'музло']

finds = set()
chars_find = re.compile(r'\w{3}')

for file in files:
    for world_search in search:
        for world in chars_find.findall(world_search):
            if world in file:
                finds.add(file)

print(finds)
Ответ написан
Комментировать
fox_12
@fox_12 Куратор тега Python
Расставляю биты, управляю заряженными частицами
Нечеткий поиск:
from fuzzywuzzy import fuzz

files = ['новая папка', 'games', 'install', 'фото', 'музыка']
search = ['папка', 'фотки', 'музло']

result = []

for im in search:
    for fil in files:
        if fuzz.partial_ratio(im, fil) > 50:
            result.append(fil)

print(result)
# ['новая папка', 'фото', 'музыка']
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
Vindicar
@Vindicar
RTFM!
Операции над множествами в помощь, intersection() в частности.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы