Как изменить ключ в словаре?
Работа с парами ключ:значение в словаре
Вот допустим я создал словарь,ключом является сам товар,значением-сочетание категории товара и его.

Напишите программу на Python, чтобы проверить, существует ли данный ключ в словаре
Напишите программу на Python, чтобы проверить, существует ли данный ключ в словаре.
Как в словаре получить ключ по значению?
Как(какой) словарь использовать, что бы можно возвращать как значение по ключу, так и ключ по.
Python — как изменить значение ключа в словаре?


Привет всем! Недавно выставил у себя на канале видео, посвященное вопросу «Как удалить запись из 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.
И да — видео выставлю сразу, как будет готово (надеюсь, скоро)
Как перебрать словарь и изменить значение ключей?
Здравствуйте. Нужно перебрать словарь на ключ-значение и если ключ совпадает с переданным в функцию — изменить значение этого ключа на 1, а остальные на 0.
Для примера в словаре только две пары. Но это нужно для движка Renpy, а не для чистого питона.
########
Кажется я понял как нужно, но вопрос удалять пока не буду, вдруг чего.
for i in dic.keys(): if dic[i] == name: dic[i] = x else: dic[i] = y
init python: stats_info_names = < 'anna_info': 0, 'kira_info': 0, >def change_bool_dict(dic, name, x, y): for i in dic.keys(): if i[0] == name: i[1] = x else: i[1] = y # Как вызываю саму функцию vbox: if anna_meet: textbutton 'Anna': action Function(change_bool_dict, stats_info_names, anna_info, 1, 0)
Если не знакомы с Renpy — не важно. Просто синтаксис другой, суть та же:
Действие для кнопки — «action», затем вызов функции и название функции «change_bool_dict»,
и передача в неё 4 аргументов.
Нужно проверить словарь на наличие второго аргумента «anna_info»,
и изменить его значение на 1, а остальным на 0. Так как объектов в словаре будет больше чем два, и они будут меняться на разных кнопках, хочу массово менять всем значения, чтобы скрывать их из виду, и отображать только один текущий объект.
Но я получаю ошибку «typle object does not support item assignment»
Вроде верно перебираю словарь, но похоже, что нет.
- Вопрос задан более года назад
- 352 просмотра
4 комментария
Простой 4 комментария
Как изменить значение ключа в словаре python

34. Словари Python. Операции и методы словаря

35. 4 Ситуации, где полезно использовать словарь

36. Как отсортировать словарь в Python

37. Кортежи (tuple). Операции и методы кортежей

38. Функции (def). Определение и вызов функции

39. Зачем нужны функции в программировании

40. Возвращаемое значение функции. Оператор return

41. Область видимости: локальная, глобальная и встроенная.

42. Вложенные функции Python
Словари (dict)
В Python имеется еще один составной тип данных, называемый словарем, который похож на список. Словарь (dict) — неупорядоченная коллекция произвольных объектов с доступом по ключу. Словарь более известен как ассоциативный массив. Словарь состоит из набора пар «Ключ-Значение». И в отличии от списка, где к каждому элементу можно обратиться по его порядковому номеру(индексу), в словаре обращение к элементу происходит по ключу.
Создание словаря
Вы можете определить словарь, включив в фигурные скобки список пар «Ключ-значение», разделенных запятыми. Двоеточие (:) отделяет каждый ключ от связанного с ним значения:
Пример: мы можем связать (ассоциировать) названия футбольной команды с городом, где она основана:
teams =
Доступ к значениям словаря
Для получения значения внутри пары вы должны обратиться по ключу dict[key]
>>> teams['PSG'] 'Paris' >>> teams['Arsenal'] 'London'
Если попытаетесь обратиться к ключу, которого нет, получится исключение типа KeyError
>>> teams['Chelsea'] Traceback (most recent call last): File "", line 1, in teams['Chelsea'] KeyError: 'Chelsea'
Добавление нового элемента
Чтобы добавить новое значение в словарь, нужно обратиться по несуществующему ключу и присвоить в него значение
>>> teams >>> teams['Sporting'] = 'Lisbon' >>> teams
Изменение элемента
Чтобы изменить значение существующего ключа, нужно обратиться по этому ключу и присвоить новое значение
>>> teams >>> teams['Arsenal']='Лондон' >>> teams
Удаление элемента
Чтобы удалить элемент словаря, нужно воспользоваться командой del
>>> teams >>> del teams['Sporting'] >>> teams
Операции со словарем
Нахождение длины словаря
Чтобы найти длину словаря(количество пар «ключ-значение»), нужно воспользоваться функцией len()
>>> teams >>> len(teams) 3 >>> len(<>) 0 >>> len() 1
Проверка вхождения ключа в словарь
Для этого нужно воспользоваться командой in. Обратите внимание, что поиск происходит только среди ключей словаря
>>> teams >>> 'Bayern' in teams True >>> 'Munich' in teams False
Методы словаря
Метод .clear()
Полностью очищает словарь
>>> teams >>> teams.clear() >>> teams <>
Метод .get(key [,default])
Метод, который принимает обязательный параметр — значение ключа. В случае, если данный ключ имеется в словаре, возвращается его значение. В противном случае вернется None, либо значение default (если оно было передено)
>>> teams >>> teams.get('PSG') 'Paris' >>> teams.get('Porto') >>> print(teams.get('Porto')) None >>> teams.get('Porto','Not exist') 'Not exist' >>> teams.get('Porto',999) 999
Метод .setdefault(key [,default])
Метод, который принимает обязательный параметр — значение ключа. Возвращает значение ключа, но если его нет создает ключ с значением default (по умолчанию None).
>>> teams >>> teams.setdefault('PSG') 'Paris' >>> teams >>> teams.setdefault('Porto') >>> teams >>> teams.setdefault('Benfika','Lisbon') 'Lisbon' >>> teams
Метод .pop(key [,default])
Метод, который удаляет ключ и возвращает значение. Если ключа нет, возвращает default (по умолчанию бросает исключение).
>>> teams >>> print(teams.pop('Porto')) None >>> teams >>> teams.pop('Benfika','Hello') 'Lisbon' >>> teams >>> teams.pop("Chelsea") Traceback (most recent call last): File "", line 1, in teams.pop("Chelsea") KeyError: 'Chelsea' >>> teams.pop("Chelsea","Hello") 'Hello'
Метод .keys()
Метод, который возвращает коллекцию всех ключей в словаре
>>> teams >>> teams.keys() dict_keys(['Arsenal', 'Bayern', 'PSG'])
Метод .values()
Метод, который возвращает коллекцию всех значений в словаре
>>> teams >>> teams.values() dict_values(['Лондон', 'Munich', 'Paris'])
Метод .items()
Метод, который возвращает коллекцию всех пар «ключ-значение»
>>> teams >>> teams.items() dict_items([('Arsenal', 'Лондон'), ('Bayern', 'Munich'), ('PSG', 'Paris')])
Обход элементов словаря в цикле for
При обходе элементов в переменной i по умолчанию будут сохранятся значения ключей
>>> teams >>> for i in teams: print(i) Arsenal Bayern PSG
Но, зная ключ, можно обратиться к значению этого ключа
>>> for i in teams: print(i, teams[i]) Arsenal Лондон Bayern Munich PSG Paris
Обойти только значения словаря можно при использовании метода .values()
>>> for i in teams.values(): print(i) Лондон Munich Paris
При помощи метода .items() можно обходить элементы, получая сразу и ключ и значение
>>> for item in teams.items(): key, value = item[0], item[1] print(key, value) Arsenal Лондон Bayern Munich PSG Paris
>>> for key, value in teams.items(): print(key, value) Arsenal Лондон Bayern Munich PSG Paris