A
A
Alexander Pavlov2021-03-14 20:53:23
Python
Alexander Pavlov, 2021-03-14 20:53:23

How to randomly print values ​​by comparing names in a json file in python?

Hello.

I have this json file:

JSON

{
"dictionary": [
{
"как тебя зовут?": [
"Мои тестовые данные",
"Тестовые данные"
],
"как ты поживаешь?": [
"Тестовые данные",
"Всё хорошо, надеюсь у тебя тоже всё хорошо :)"
],
"привет": [
"Привет, как тебя зовут?",
"Здравствуй! Поговорим?"
]
}
]
}


It is assumed that when the user enters hello, he will be given one of the suggested values ​​in square brackets.

I wrote a code, but it prints out all the values ​​that are in the file, but how can I make it compare the name with the entered one and randomly return any of the values?
import json
from random import choice

with open('keywords.json', encoding='utf-8') as json_file:
    data = json.load(json_file)


for item in data["dictionary"]:
  for item2 in item:
    for item3 in item[item2]:
      print(choice(item[item2]))


I don’t remember if it’s allowed, I’ll post a link to repl.it:
Link

Answer the question

In order to leave comments, you need to log in

1 answer(s)
S
soremix, 2021-03-14
@Sanchez9891

Well, then you should make the dictionary values ​​not a list, but a dictionary, in order to better navigate.

{
   "dictionary": {
         "как тебя зовут?":[
            "Мои тестовые данные",
            "Тестовые данные"
         ],
         "как ты поживаешь?":[
            "Тестовые данные",
            "Всё хорошо, надеюсь у тебя тоже всё хорошо :)"
         ],
         "привет":[
            "Привет, как тебя зовут?",
            "Здравствуй! Поговорим?"
         ]
      }
}

I do not understand what is in your code, but let's say this:
from random import choice

# JSON в переменной data

message = 'Привет' # текст, который ввел пользователь

if message.lower() in data['dictionary']:
    print(choice(data['dictionary'][message.lower()]))

Didn't find what you were looking for?

Ask your question

Ask a Question

731 491 924 answers to any question