Как заменить ключ в словаре питон
Перейти к содержимому

Как заменить ключ в словаре питон

  • автор:

Как поменять местами ключ и значение в словаре?

Необходимо с помощью функции поменять местами ключ и значение у определенной пары. нашел решение только для смены местами всех ключей и значений:

def reverse(k, v): for k, v in dict.items(): dict[v] = k reverse("b", "def") print(dictionary) 

Получаю такую ошибку: RuntimeError: dictionary changed size during iteration
Отслеживать
задан 28 мар 2022 в 16:32
87 6 6 бронзовых знаков
Код, который вы показали, нерабочий от слова совсем (даже до ошибки RuntimeError дело не дойдёт)
28 мар 2022 в 16:34

А вообще если у одной определённой пары, то просто словарь[словарь.pop(ключ)] = ключ да и всё, не надо никакие циклы городить

28 мар 2022 в 16:35

Ошибка потому, что нельзя итерироваться по словарю и одновременно менять его. Непонятно всё-таки вы один ключ хотите поменять или все? У вас противоречие между сигнатурой функции и тем, что вы в ней делаете.

Добавление/изменение значения словаря по ключу key в Python

Операция d[key] = value добавит в словарь dict новый элемент — пару ключ-значение.

Если в словаре существует ключ key то эта операция присвоит ключу key новое значение value .

Примеры добавления ключей в словарь:

# создадим пустой словарь `x` >>> x = <> # добавим в словарь `x` ключ 'one' со значением 1 >>> x['one'] = 1 # # добавим еще несколько ключей со значениями >>> x['two'] = 2 >>> x['three'] = 3 >>> x['four'] = 4 # смотрим что получилось >>> x #

Примеры изменения значений ключей в словаре:

# изменим значение с ключом `two` >>> x['two'] = 20 >>> x # # добавим в словарь `x` ключ 'ten' со значением 10 >>> x['ten'] = 10 # # изменим значение с ключом `one` >>> x['one'] = 0 #
  • ОБЗОРНАЯ СТРАНИЦА РАЗДЕЛА
  • Представления словарей dict.keys, dict.values и dict.items
  • Исходный словарь для представления dictview.mapping
  • Получение списка ключей словаря list(dict)
  • Количество элементов в словаре len(dict)
  • Доступ к значению словаря по ключу dict[key]
  • Добавление/изменение значения словаря по ключу key
  • Удаление значения словаря по ключу
  • Проверка наличия/отсутствия ключа key в словаре dict
  • Проверка наличия/отсутствия значения value в словаре Python
  • Проверка наличия/отсутствия пары (key, value) в словаре dict
  • Итерирование по ключам и значениям словаря Python
  • Метод dict.clear(). Очистить словарь
  • Метод dict.copy(), копия словаря
  • Метод dict.fromkeys(), словарь с ключами по умолчанию
  • Метод dict.get(), значение по умолчанию если ключа нет
  • Метод dict.items(), список кортежей
  • Метод dict.keys(), список ключей словаря
  • Метод dict.values(), список значений словаря
  • Метод dict.pop()
  • Метод dict.popitem(), получить пару ключ/значение
  • Метод dict.setdefault(), получает/вставляет значение ключа
  • Метод dict.update(), обновление/дополнение словаря
  • Объединение двух словарей в новый словарь Python
  • Сортировка словаря по значению и/или ключу
  • Обратный порядок/реверс словаря reversed(dict)
  • Генератор словаря и его использование
  • Фильтр словаря по ключам и/или значениям
  • Словарь как фабрика функций

ХОЧУ ПОМОЧЬ
ПРОЕКТУ

Метод dict.update() в Python, обновление/дополнение словаря

Обновить или дополнить исходный словарь, ключами и значениями другого словаря

Синтаксис:
dict.update([other]) # новое в Python 3.9 dict |= other 
Параметры:
  • dict — словарь, который необходимо обновить.
  • other — другой объект словаря или список пар (key, value) в виде кортежа.
Возвращаемое значение:
Описание:

Метод dict.update() обновляет/дополняет словарь dict с помощью пар ключ-значение из other , перезаписывая существующие ключи новыми значениями из other . Если ключ в словаре отсутствует, то он добавляется. Метод ничего не возвращает.

Другими словами, метод производит дополнение одного словаря другим, добавляя (если ключа нет) или перезаписывая (если ключ есть) значения ключей исходного словаря.

Метод dict.update() принимает либо другой объект словаря, либо итерируемую последовательность пар ключ/значение в виде кортежей или других итераций вида (key, value) .

Если заданы ключевые аргументы, то словарь обновляется с помощью следующих пар ключ/значение:

>>> x = 'yellow':0, 'red':2> >>> x.update(red=1, blue=2). >>> x #

Отличие операции обновления/дополнения словаря от операция объединения/слияния словарей заключается в том, что в результате операции объединения образуется новый словарь (исходные словари не изменяются), а при операции обновления/дополнения dict.update() изменяется исходный словарь dict .

Пример обновления/дополнения исходного словаря, ключами и значениями другого словаря:

>>> x = 'one': 10, 'two': 20, 'three': None> >>> y = 'three': 30, 'four': 40, 'five': 50> >>> x.update(y) >>> x # # новое в Python 3.9 >>> x |= y >>> x # >>> y = [('three', 3), ('four', 4), ('five', 5), ('six', 6)] >>> x.update(y) >>> x #
  • ОБЗОРНАЯ СТРАНИЦА РАЗДЕЛА
  • Представления словарей dict.keys, dict.values и dict.items
  • Исходный словарь для представления dictview.mapping
  • Получение списка ключей словаря list(dict)
  • Количество элементов в словаре len(dict)
  • Доступ к значению словаря по ключу dict[key]
  • Добавление/изменение значения словаря по ключу key
  • Удаление значения словаря по ключу
  • Проверка наличия/отсутствия ключа key в словаре dict
  • Проверка наличия/отсутствия значения value в словаре Python
  • Проверка наличия/отсутствия пары (key, value) в словаре dict
  • Итерирование по ключам и значениям словаря Python
  • Метод dict.clear(). Очистить словарь
  • Метод dict.copy(), копия словаря
  • Метод dict.fromkeys(), словарь с ключами по умолчанию
  • Метод dict.get(), значение по умолчанию если ключа нет
  • Метод dict.items(), список кортежей
  • Метод dict.keys(), список ключей словаря
  • Метод dict.values(), список значений словаря
  • Метод dict.pop()
  • Метод dict.popitem(), получить пару ключ/значение
  • Метод dict.setdefault(), получает/вставляет значение ключа
  • Метод dict.update(), обновление/дополнение словаря
  • Объединение двух словарей в новый словарь Python
  • Сортировка словаря по значению и/или ключу
  • Обратный порядок/реверс словаря reversed(dict)
  • Генератор словаря и его использование
  • Фильтр словаря по ключам и/или значениям
  • Словарь как фабрика функций

Возможно ли изменить значение ключа в словаре?

Возможно ли, не создавая новых элементов словаря, изменить значение какого-либо из его ключей? Вопрос чисто теоретический, на практике такой необходимости у меня не возникало. Интересует в первую очередь Python 3.6+

Отслеживать
задан 17 окт 2018 в 22:28
23 1 1 золотой знак 1 1 серебряный знак 5 5 бронзовых знаков
Если вам помог ответ, примите его пожалуйста.
18 окт 2018 в 6:07
почитайте про хэш-таблицы — расширьте видение происходящего при работе со словарями
18 окт 2018 в 7:41

@EugeneDennis, спасибо, почитал. Но пока остаётся недопонимание: в качестве ключа словаря можно использовать пользовательский объект, который в общем случае изменяем (mutable), как при этом не меняется хэш-значение?

20 окт 2018 в 21:38

пользовательский объект может иметь методы __hash__() или __eq__ , __cmp__ , тогда его можно будет использовать в качестве ключа, по умолчанию пользовательский класс можно использовать в качестве словаря, но там берётся self.id , а он у двух одинаковых классов разный, поэтому для использования это мало где пригодиться

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *