как сократить это действие до нескольких операторов for

мне надо сократить этот код до нескольких строчек. возможно ли это с даными листами или надо это делать с словорями?

from fuzzywuzzy import fuzz
from fuzzywuzzy import process

# Оброшение
alias = ['арка', 'ара', 'арара', 'аришенька', 'арочка'] # оброшение (для удаления)
tbr = ['скажи', 'расскажи', 'сказать'] # Просьба сказать (для удаления)
cname = ['зовут', 'название', 'прозвище',]# имя
csearch = ['найди', 'загугли', 'поиск', 'подскажи', 'найдика', 'найди в интернете'] # поиск
# Время
ctime = ['время', 'час'] # время
ctimer = ['таймер', 'засеки', 'засеки время']#таймер
csleep = ['засни', 'усни', 'засыпай', 'отключись'] # отключение на время
# Приложения
calc = ['сколько будеть', 'сколько', 'посчитай', 'сложи', 'умнож', 'раздели', 'вычти'] # калькулятор
a = 'Как тебя зовут'

for x in alias:
    fuzAlias = fuzz.token_sort_ratio(x, a)
    if fuzAlias >= 50:
        aliasT = True
        break
    else:
        aliasT = False


for x in tbr:
    fuzTbr = fuzz.token_sort_ratio(x, a)
    if fuzTbr >= 50:
        tbrT = True
        break
    else:
        tbrT = False


for x in ctime:
    fuzCtime = fuzz.token_sort_ratio(x, a)
    if fuzCtime >= 50:
        ctimeT = True
        break
    else:
        ctimeT = False


for x in cname:
    fuzCname = fuzz.token_sort_ratio(x, a)
    if fuzCname >= 50:
        cnameT = True
        break
    else:
         cnameT = False


for x in csearch:
    fuzCsearch = fuzz.token_sort_ratio(x, a)
    if fuzCsearch >= 50:
        csearchT = True
        break
    else:
         csearchT = False


for x in csleep:
    fuzCsearch = fuzz.token_sort_ratio(x, a)
    if fuzCsleep >= 50:
        csleepT = True
        break
    else:
         csleepT = False

    
print (aliasT)
print (tbrT)
print (ctimeT)
print (cnameT)

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

Автор решения: gil9red

У вас куски кода вида:

for x in <words>:
    fuz<words> = fuzz.token_sort_ratio(x, <text>)
    if fuz<words> >= 50:
        <words>T = True
        break
    else:
        <words>T = False

Оберните это в функцию, например:

def is_match(words: list, text: str) -> bool:
    for x in words:
        fuz = fuzz.token_sort_ratio(x, text)
        if fuz >= 50:
            return True

    return False

Тогда, работать с кодом будет проще:

aliasT = is_match(alias, a)
print(aliasT)
→ Ссылка