Как изменить имена ключей в словаре python?
Добрый день.
Есть словарь:
d1 = <1:'a', 2:'b', 3:'c', 4:'d', 5:'e'>
В нем необходимо заменить имена некоторых ключей. Например:
Как это правильнее сделать? Вариант с кучей if выглядит громоздким:
- Вопрос задан более трёх лет назад
- 18185 просмотров
- Вконтакте
Возможности просто переименовать ключ в словарях питона нет.
Пример присваивания новому ключу значение из старого ключа, с удалением старого ключа.
dictionary[new_key] = dictionary.pop(old_key)
Если же вопрос ваш в том, как построить сам алгоритм замены, то могу предложить следующий:
Словари и методы в Python. Добавление списка в словарь
Словарь в Python — неупорядоченная структура данных, позволяющая хранить пары «ключ-значение». В этой статье вы узнаете, как выглядит словарь, какие используются методы при работе с ним, а также о том, как преобразовать список в словарь.
Словарь (dictionary) в Python используется наряду с кортежами и списками, похожие структуры есть и в других языках программирования (ассоциативный массив в PHP, словарь в C#).
Словарь, как и список, хранит коллекцию элементов. И каждый элемент в словаре, как было уже упомянуто, имеет уникальный ключ — с ним ассоциировано какое-либо значение.
Вот синтаксис словаря в Python:
А вот ещё пример словаря:
Вышописанный словарь использует в качестве ключей строки. Но ключом может быть и другой неизменяемый тип данных, а значением конкретного ключа — что угодно. Давайте посмотрим на словарь, где ключи — это числа, а значения — это строки:
Примечание: если будете применять в качестве ключа изменяемый тип данных (правильнее сказать, нехэшируемый, хотя обычно это одно и то же), то на выходе будет ошибка:
Получаем данные из словаря
Чтобы получить значения конкретного ключа используют квадратные скобки [] . Представим, что у нас в словаре присутствует пара «марафон»: 26.
Но если вы захотите получить значение, используя не существующий ключ, будет ошибка. Чтобы избежать ошибок, применяют методы.
Как добавлять и обновлять ключи
Добавление в словарь новых пар выполняется просто:
Для обновления делаем то же самое:
Как удалять ключи
Чтобы удалить ключ и соответствующее значение из словаря, используем del:
Методы
Cловари имеют много полезных методов, помогающих в работе. Рассмотрим наиболее популярные.
Update
Метод update() нужен при объявлении нескольких пар одновременно. В качестве аргумента метод принимает другой словарь:
Возможно, вы спросите, почему в словаре данные расположены в другом порядке, а не в том, в котором были в него внесены. Ответ прост — словари не упорядочены.
get() возвратит значение по указанному ключу. А если его нет, то метод вернёт нам None .
Способ используют при проверке, а есть ли ключи в словаре:
Кроме того, вы можете указать значение по умолчанию — оно вернётся вместо None , если ключа не будет в словаре:
Метод pop() служит для удаления ключа и возвращения соответствующего ему значения.
Метод keys() необходим, чтобы возвратить коллекцию ключей в словаре:
Values
Возвратит коллекцию значений в словаре.
Items
Если нужно вернуть пары «ключ — значение», используют items() :
Итерация через словарь
В «Питоне» есть возможность выполнить итерацию в словаре по каждому ключу:
Кстати, вместо story_count можно применять story_count.keys() .
Внимательно посмотрите на участок кода ниже: в нём цикл for использует метод items() , чтобы получить пары «ключ — значение» на каждую итерацию:
Словарь и список: выполнение преобразования из списка в словарь
Словарь (dictionary) и список (list) — типы, непохожие по своей структуре. Однако для отдельных видов списка есть возможность преобразования списка в словарь. Для этого используют встроенную функцию dict() . Необходимо, чтобы список хранил набор вложенных списков. Также нужно, чтобы каждый вложенный список состоял из 2-х элементов. В результате во время конвертации списка в словарь 1-й элемент превратится в ключ, 2-й — в значение:
Таким же образом возможно преобразование в словарь не только списка, но и двухмерных кортежей:
Материал подготовлен специально для OTUS на основании статьи «Python Dictionary and Dictionary Methods».
Python — как изменить значение ключа в словаре?
Привет всем! Недавно выставил у себя на канале видео, посвященное вопросу «Как удалить запись из json?» кстати, запись по этому поводу доступна тут, а видео — вот здесь И один из подписчиков канала подсказал идею следующего видео — как изменить значение ключа в словаре? Видео — совсем скоро, а пока — текстовое описание решения данного вопроса Поехали!
Итак, вернемся к многострадальному json-файлу, в котором хранится зарплата пользователей. Выглядит он вот так:
Как видите — у нас имеется четыре пользователя, причем — каждая запись представляет собой связку «Ключ — значение», в котором ключем выступает имя пользователя, а значением — размер его зарплаты. Внимание — вопрос: как изменить значение ключа в словаре? Ну т.е. у пользователя изменилась зарплата, как внести это изменение в json-файл?
Все просто! Для начала — давайте вспомним, что любой json-файл — ничего более, как словарь. А раз это словарь — то и работать с ним нужно как со словарем. Не буду описывать методику конвертирования json-файла в словарь (библиотека json в помощь ) — приведу лишь пример рабочего кода ниже:
ВСЕ!
Т.е. мы нашли нужную нам запись в словаре, в снесли туда обновленную информацию в значение salary. Осталось дело за малым — сделать дамп в json-файл, и возрадоваться. Но это уже — другая история.
И да — аналогичным образом делается корректировка значения ключа name:
Надеюсь, эта запись помогла вам разобраться с вопросом: как изменить значение ключа в словаре?
Как всегда — в случае возникновения вопросов пишите на почту, или в Telegram.
И да — видео выставлю сразу, как будет готово (надеюсь, скоро)
Смена мест между ключами и их значениями
Необходимо сделать так, чтобы имена значений находились на местах ключей, а ключи, в свою очередь, находились на местах значений, к которым они присоединены.
Пробовал сделать подобным образом:
И только после вспомнил, что кортежи неизменяемые 🙂
Посоветуйте, как быть?
![]()
Чтобы поменять местами ключи и значения в словаре:
Если значения неуникальны, то последнее среди дубликатов выигрывает — это значит, результат может меняться в зависимости от конкретной реализации Питона и даже от запуска к запуску на некоторых версиях, так как Питон не гарантирует порядок записей для словарей (до Python 3.7)