Привет всем! Недавно выставил у себя на канале видео, посвященное вопросу «Как удалить запись из json?» кстати, запись по этому поводу доступна тут, а видео — вот здесь 🙂 И один из подписчиков канала подсказал идею следующего видео — как изменить значение ключа в словаре? Видео — совсем скоро, а пока — текстовое описание решения данного вопроса 😉 Поехали!
Итак, вернемся к многострадальному json-файлу, в котором хранится зарплата пользователей. Выглядит он вот так:
{ "personal": [ { "name": "Вася", "salary": 5000 }, { "name": "Саша", "salary": 6000 }, { "name": "Глаша", "salary": 5600 }, { "name": "Федот", "salary": 5600 } ] }
Как видите — у нас имеется четыре пользователя, причем — каждая запись представляет собой связку «Ключ — значение», в котором ключем выступает имя пользователя, а значением — размер его зарплаты. Внимание — вопрос: как изменить значение ключа в словаре? Ну т.е. у пользователя изменилась зарплата, как внести это изменение в json-файл?
Все просто! Для начала — давайте вспомним, что любой json-файл — ничего более, как словарь. А раз это словарь — то и работать с ним нужно как со словарем. Не буду описывать методику конвертирования json-файла в словарь (библиотека json в помощь 😉 ) — приведу лишь пример рабочего кода ниже:
username = str(input('Имя пользователя? \n: ')) for text in dist['personal']: print(text) if text['name'] == username: print('Пользователь найден') new_salary = int(input('Новая зарплата\n:')) text['salary'] = new_salary
ВСЕ!
Т.е. мы нашли нужную нам запись в словаре, в снесли туда обновленную информацию в значение salary. Осталось дело за малым — сделать дамп в json-файл, и возрадоваться. Но это уже — другая история.
И да — аналогичным образом делается корректировка значения ключа name:
username = str(input('Имя пользователя? \n: ')) print('Меняем имя пользователя') for text in dist['personal']: if text['name'] == username: new_name = str(input('Введите новое имя пользователя\n: ')) text['name'] = new_name
Надеюсь, эта запись помогла вам разобраться с вопросом: как изменить значение ключа в словаре?
Как всегда — в случае возникновения вопросов пишите на почту, или в Telegram.
И да — видео выставлю сразу, как будет готово (надеюсь, скоро)