@RusKFA

Как удалить значение из Json?

У меня есть массив keys
619f830581964572595838.png

В нём хранятся всякие штуки

Я использую del mas[i]
но оно не работает

Вот мой код:
with open('keys.json', 'r', encoding='utf-8') as f: #открыли файл с данными
            mas = json.load(f) #загнали все, что получило

    print(key)
    for i in range(len(mas)):
        if (mas[i] == key):
            print(mas)

            await bot.send_message(
                    chat_id=message.chat.id,
                    text =  "okay" 
                    ) 
            text = 1
            sql.execute(f'UPDATE users SET sub = {text}  WHERE user_id = {message.from_user.id}')
            int(i)
            del mas[i]
      
        else:
            await bot.send_message(
                    chat_id=message.chat.id,
                    
                    text = "не окей" )

key это данные которые ввёл пользователь
То есть в чём суть скрипта? Если то, что ввёл пользователь совпадёт со значением из json то в статус пользователя добавятся некоторые значения, всё работает кроме удаление элемента из json

А вот и ошибка (IndexError: list index out of range)
619f8400806eb852220469.png
  • Вопрос задан
  • 252 просмотра
Решения вопроса 1
SoreMix
@SoreMix Куратор тега Python
yellow
Не стоит итерировать список, который вы в этом же цикле изменяете. Ну и SQL запросы составлять бы иначе

if key in mas:
    await bot.send_message(chat_id=message.chat.id, text =  "okay")
    sql.execute('UPDATE users SET sub = ?  WHERE user_id = ?', (text, message.from_user.id))
    mas.remove(key)
else:
    await bot.send_message(chat_id=message.chat.id, text = "не окей" )
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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