Перейти к содержимому

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

  • автор:

Python-сообщество

[RSS Feed]

  • Начало
  • » Python для новичков
  • » Как переименовать ключи в словаре?

#1 Март 6, 2010 19:39:47

Валерий От: Зарегистрирован: 2010-02-22 Сообщения: 10 Репутация: 0 Профиль Отправить e-mail

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

Подскажите пожалуйста как переименовать ключи в словаре? Например у меня есть словарь вида , мне нужно переименовать все значения ключей к виду .

Изменение данных в словаре — Python: Cловари и множества

Словарь в Python — изменяемый или мутабельный. Но для добавления новой пары «ключ-значение» не нужны отдельные методы, вроде спискового метода .append — достаточно обычного присваивания:

d = <> # пустой словарь d["a"] = 100 print(d) # => d["b"] = 200 d["a"] = 0 print(d) # => 

Здесь вы можете увидеть, что присваивание значения новому ключу выглядит точно так же, как и присваивание существующему. Именно эту тему мы изучим подробнее в этом уроке

Метод pop

Удаление элементов из словаря можно сделать с помощью метода pop — в этом словарь уже больше похож на список. Только вместо индекса используется ключ:

d = 'a': 1, 'b': 2> d.pop('a') # 1 d # d.pop('BANG') # KeyError: 'BANG' 

Этот пример показывает, что будет, если попытаться извлечь значение по несуществующему ключу — мы получим исключение.

Однако метод pop можно вызывать с указанием значения по умолчанию. В этом случае при отсутствии ключа в словаре будет возвращено это самое значение, а исключение возбуждено не будет:

d = 'a': 1, 'b': 2> d.pop('BANG', None) d.pop('BANG', 42) # 42 

Аналогом спискового pop без аргументов для словаря служит метод popitem . Этот метод извлекает ключ и значение в виде кортежа, а если словарь уже пуст, то возбуждает исключение:

d = 'a': 1> d.popitem() # ('a', 1) d.popitem() # KeyError: 'popitem(): dictionary is empty' 

В пайтоне, начиная с версии 3.7, гарантирован порядок LIFO — Last In First Out. Это значит, что пары будут извлекаться в порядке обратном добавлению, то есть последняя добавленная пара, будет извлечена первой. При этом мы можем быть уверены в том, что:

  • Все пары будут извлечены
  • Каждая пара будет извлечена строго один раз

Дополнение одного словаря другим

У списка есть метод extend , который расширяет один список другим. У словаря есть похожий по смыслу метод update . Но при вызове update ассоциированный объект словаря не просто получает пары «ключ-значение» из нового словаря. Происходит именно обновление данных — поэтому метод и называется update . Работает это так:

  • Новые ключи дописываются в словарь
  • Если какие-то ключи уже существовали до этого, то связанные с ними значения, будут заменены новыми

Так это выглядит в коде:

cart = 'apples': 2, 'oranges': 1> addon = 'oranges': 5, 'lemons': 3> cart.update(addon) cart # 

В коде выше мы добавили лимоны и обновили количество апельсинов.

Копирование словаря

В случае списков мы можем сложить два списка двумя способами:

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

Но словари нельзя складывать, да и срезы словари тоже не поддерживают. Зато у словаря есть метод copy . Он работает как копирование списка с помощью среза [:] — при вызове он возвращает поверхностную копию из словаря. Так же ее называют «неглубокой копией» или shallow copy.

Поверхностная копия воспроизводит только структуру словаря: не копирует значения, а только создает на них новые ссылки. Тем не менее поверхностная копия — это новый словарь, который может изменять свой состав, не влияя на оригинал:

d = 'a': 1, 'b': [42]> c = d.copy() c.update('a': 10, '1k': 1024>) c # c['b'].append(None) c # d # 

Словарь c получил собственную структуру, при этом его обновление не затронуло оригинальный словарь d . Однако изменение объекта списка по ссылке затронуло и оригинал, потому что при копировании словаря ссылка на список тоже скопировалась.

Очистка словаря

Списки можно очистить с помощью присваивания срезу l[:] = [] . В случае словаря вместо присваивания срезу используется метод clear .

Метод clear() удаляет все элементы из текущего словаря:

d = 'a': 1> 

Открыть доступ

Курсы программирования для новичков и опытных разработчиков. Начните обучение бесплатно

  • 130 курсов, 2000+ часов теории
  • 1000 практических заданий в браузере
  • 360 000 студентов

Наши выпускники работают в компаниях:

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

Возможно ли, не создавая новых элементов словаря, изменить значение какого-либо из его ключей? Вопрос чисто теоретический, на практике такой необходимости у меня не возникало. Интересует в первую очередь 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 , а он у двух одинаковых классов разный, поэтому для использования это мало где пригодиться

№12 Словарь (dict) / Уроки по Python для начинающих

Словарь — неупорядоченная последовательность, гибким к изменениям и индексированным. В Python словари пишутся в фигурных скобках, и состоят из ключей и значений.
Создадим и выведем словарь:

thisdict =  "brand": "Ford", "model": "Mustang", "year": 1964 > print(thisdict) 

Доступ к элементам

Вы можете получить доступ к элементам словаря ссылаясь на его ключевое название.
Получим значение по ключу “model” :

x = thisdict["model"] 

Существует так же метод под названием get() который даст вам тот же результат.

x = thisdict.get("model") 

Изменить значение

Вы можете поменять значение указанного элемента ссылаясь на ключевое название.
Поменяем “year” на “2018”:

thisdict =  "brand": "Ford", "model": "Mustang", "year": 1964 > thisdict["year"] = 2018 print(thisdict) 

Цикл for по словарю

При проходе по словарю вы получите его ключи, но так же есть методы для возврата значений.
Выведем один за другим все ключи словаря:

for x in thisdict: print(x) 
brand model year 

Выведем значения словаря, один за одним:

for x in thisdict: print(thisdict[x]) 
Ford Mustang 1964 

Вы так же можете использовать функцию values() для возврата значений словаря:

for x in thisdict.values(): print(x) 
Ford Mustang 1964 

Пройдем по ключам и значениям, используя функцию items() :

for x, y in thisdict.items(): print(x, y) 
brand Ford model Mustang year 1964 

Длина словаря

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

print(len(thisdict)) 

Добавление элементов

Добавление элементов в словарь выполняется с помощью нового ключа:

thisdict =  "brand": "Ford", "model": "Mustang", "year": 1964 > thisdict["color"] = "red" print(thisdict) 

Удаление элементов

Существует несколько методов удаления элементов из словаря.
Метод pop() удаляет элемент по ключу и возвращает его:

thisdict =  "brand": "Ford", "model": "Mustang", "year": 1964 > thisdict.pop("model") 

Метод popitem() удаляет последний элемент:

thisdict =  "brand": "Ford", "model": "Mustang", "year": 1964 > thisdict.popitem() 

Ключевое слово del удаляет элемент по ключу:

thisdict =  "brand": "Ford", "model": "Mustang", "year": 1964 > del thisdict["model"] print(thisdict) 

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

thisdict =  "brand": "Ford", "model": "Mustang", "year": 1964 > del thisdict print(thisdict) #это вызывает ошибку, так как "thisdict" больше не существует. 

Ключевое слово clear() очищает словарь:

thisdict =  "brand": "Ford", "model": "Mustang", "year": 1964 > thisdict.clear() print(thisdict) 

Конструктор dict()

Вы так же можете использовать конструктор dict() для создания нового словаря.

thisdict = dict(brand="Ford", model="Mustang", year=1964) # обратите внимание, ключевые слова не являются строками # обратите внимание на использование "рвно", вместо двоеточия для задания print(thisdict) 

Методы словаря

В Python существует набор встроенных методов, с помощью которых вы можете работать со словарями.

Метод Значение
clear() Удаляет все элементы из словаря
copy() Делает копию словаря
fromkeys() Возвращает словарь с указанными ключами и значениями
get() Возвращает значение по ключу
items() Возвращает список, содержащий tuple для каждой пары ключ-значение
keys() Возвращает список, содержащий ключи словаря
pop() Удаляет элементы по ключу
popitem() Удаляет последнюю пару ключа со значением
setdefault() Задает значение по ключу. Если ключа нет в словаре, добавляет его с указанным значением или None
update() Обновляет словарь, добавляя пары ключ-значение
values() Возвращает список всех значений в словаре
  • ТЕГИ
  • Уроки Python для начинающих

Я создал этот блог в 2018 году, чтобы распространять полезные учебные материалы, документации и уроки на русском. На сайте опубликовано множество статей по основам python и библиотекам, уроков для начинающих и примеров написания программ.

Мои контакты: Почта
Python Q https://yandex.ru/q/loves/python Online

Python Q CEO Pythonru admin@pythonru.com https://secure.gravatar.com/avatar/b16f253879f7349f64830c64d1da4415?s=96&d=mm&r=g CEO Pythonru Python Александр Редактор https://t.me/cashncarryhttps://pythonru.com/https://yandex.ru/q/profile/cashnc/ PythonRu.com admin@pythonru.com Alex Zabrodin 2018-10-26 Online Python, Programming, HTML, CSS, JavaScript

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

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