@StivenHolland
Программист-самоучка

Как написать обработку словаря в вк?

У меня есть словарь для бота по типу:
привет\хай\здравствуй == Привет\Здравствуй\Привет, как дела?
Как сделать так, чтобы бот проверял наличие каждого значения до "==" в сообщении, и если оно присутствует в нем, то дать рандомный ответ из правой стороны
f = open('rad.txt', 'r', encoding='utf-8')
            d = {}
            for line in f:
                d[line[:line.index('==')-1]] = line[3+line.index('=='):].split('\\')
            f.close()

            response = body
            for key in d.keys():
                if key in response.lower():
                    lep=random.choice(d[key])

Это пример в котором просто берется рандомное значение из правой стороны. Слева допустим только один вариант, а мне нужно, чтобы там можно было написать несколько вариантов(см. выше) и при этом он перебирал все их на наличие данного текста в сообщении. Спасибо заранее
  • Вопрос задан
  • 70 просмотров
Решения вопроса 1
npanuhin
@npanuhin
Вот один из вариантов:
import random

f = open('rad.txt', 'r', encoding='utf-8')

d = {}
for line in f:
    keys = line[:line.index('==') - 1].split('\\')
    values = line[3 + line.index('=='):].split('\\')
    for key in keys:
        d[key] = values

f.close()

response = "привет"
for key in d.keys():
    if key in response.lower():
        lep = random.choice(d[key])

print(lep)

  1. Получаем все ключи
  2. Получаем все значения
  3. Для каждого ключа создаём пункт в d равный массиву со всеми значениями

Если важно потребление памяти, то лучше сделать, например, такую структуру:
spoiler
[
	[
		["привет", "хай", "здравствуй"], ["Привет", "Здравствуй", "Привет"]
	],
	[
		Другая фраза
	]
]

А затем делать:
For по фразам:
    For по ключам:
        Random по значениям

Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы