Добавление/изменение значения словаря по ключу 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)
- Генератор словаря и его использование
- Фильтр словаря по ключам и/или значениям
- Словарь как фабрика функций
ХОЧУ ПОМОЧЬ
ПРОЕКТУ
Как добавить элемент в словарь Python
В языке программирования Python словарь представляет собой упорядоченную коллекцию пар ключ-значение. Он широко используется для хранения и организации данных, где каждый элемент обращается по ключу вместо индекса, как в случае с другими структурами данных, такими как списки.
Одной из основных операций, которые мы часто выполняем над словарями, является добавление новых элементов. Добавление элементов в словарь позволяет нам расширять его функциональность и вносить новые данные для дальнейшей обработки.
В этой статье мы рассмотрим несколько способов добавления элементов в словарь Python. Мы охватим различные сценарии и покажем, как использовать разные подходы в зависимости от конкретных требований. Продолжайте чтение, чтобы узнать о различных методах и приемах добавления элементов в словарь Python.
Добавление элементов с использованием квадратных скобок
Добавление элементов в словарь с использованием квадратных скобок — это один из способов добавления новых пар ключ-значение в словарь. Мы можем использовать существующий ключ в квадратных скобках и присвоить ему новое значение. Если ключ не существует, то он будет создан, и ему будет присвоено указанное значение.
Вот пример использования квадратных скобок для добавления элементов в словарь:
my_dict = my_dict['cherry'] = 2 my_dict['orange'] = 4 print(my_dict) # Вывод:
В этом примере мы создали словарь my_dict с двумя начальными парами ключ-значение. Затем мы использовали квадратные скобки для добавления новых элементов. Мы добавили ключ ‘cherry’ со значением 2 и ключ ‘orange’ со значением 4 .
Если ключ уже существует в словаре, то его значение будет заменено новым значением. Например, если мы повторно добавим ключ ‘apple’ с новым значением, то значение ‘apple’ в словаре будет обновлено.
my_dict['apple'] = 7
В результате значение ‘apple’ в словаре изменится на 7 .
Использование квадратных скобок для добавления элементов в словарь — простой и удобный способ. Он позволяет нам легко добавлять новые пары ключ-значение и обновлять значения существующих ключей в словаре.
Добавление элементов с использованием метода update()
Добавление элементов в словарь с использованием метода update() — это еще один удобный способ добавления новых пар ключ-значение в словарь в Python. Метод update() позволяет объединить два словаря или добавить несколько пар ключ-значение в существующий словарь.
Вот пример использования метода update() для добавления элементов в словарь:
my_dict = my_dict.update() print(my_dict) # Вывод
В этом примере мы создали словарь my_dict с двумя начальными парами ключ-значение. Затем мы использовали метод update() и передали ему новый словарь с парами ключ-значение, которые мы хотим добавить. Метод update() объединяет два словаря, добавляя новые пары ключ-значение к существующему словарю.
Мы также можем использовать метод update() для добавления одной пары ключ-значение в словарь:
my_dict.update()
В этом случае мы передаем методу update() словарь с одной парой ключ-значение, которую мы хотим добавить.
Еще один способ использования метода update() — передать ему итерируемый объект, содержащий пары ключ-значение:
my_dict.update([('cherry', 2), ('orange', 4)])
В этом примере мы передаем список кортежей с парами ключ-значение методу update() , чтобы добавить эти пары в словарь.
Метод update() также может быть использован для обновления значений существующих ключей. Если ключ уже существует в словаре, то его значение будет заменено новым значением из переданного словаря или итерируемого объекта.
Использование метода update() предоставляет гибкость при добавлении элементов в словарь и позволяет нам добавлять несколько пар ключ-значение за один раз или объединять словари. Это удобный метод для манипуляции со словарями в Python.
Добавление элементов с проверкой наличия ключа
При добавлении элементов в словарь в Python, иногда может возникнуть необходимость проверить наличие ключа, чтобы избежать перезаписи существующего значения или выполнить определенные действия в зависимости от результата проверки.
Для проверки наличия ключа в словаре и добавления элемента с условием, мы можем использовать метод setdefault() . Этот метод позволяет нам задать значение по умолчанию, которое будет установлено для ключа, если его нет в словаре.
Вот пример использования метода setdefault() для добавления элементов с проверкой наличия ключа:
my_dict = my_dict.setdefault('cherry', 2) # Добавляем новую пару ключ-значение my_dict.setdefault('banana', 10) # Не добавляем, так как ключ уже существует print(my_dict) # Вывод
В данном примере у нас есть словарь my_dict с двумя парами ключ-значение. Мы используем метод setdefault() для добавления новой пары ключ-значение. Первый вызов my_dict.setdefault(‘cherry’, 2) добавляет пару ‘cherry’: 2′ , так как ключ ‘cherry’ не существует в словаре. Второй вызов my_dict.setdefault(‘banana’, 10) не добавляет новую пару, так как ключ ‘banana’ уже присутствует в словаре.
Метод setdefault() возвращает значение, связанное с ключом, если ключ уже существует в словаре, и устанавливает значение по умолчанию и возвращает его, если ключа нет в словаре. Это позволяет нам получать текущее значение ключа или устанавливать новое значение, если ключ отсутствует.
Использование метода setdefault() с проверкой наличия ключа обеспечивает безопасное добавление элементов в словарь, предотвращая перезапись существующих значений и давая нам контроль над добавлением элементов в зависимости от наличия ключа.
Как добавить несколько значений к ключу в python
Обычные списки (массивы) представляют собой набор пронумерованных элементов, то есть для обращения к какому-либо элементу списка необходимо указать его номер. Номер элемента в списке однозначно идентифицирует сам элемент. Но идентифицировать данные по числовым номерам не всегда оказывается удобно. Например, маршруты поездов в России идентифицируются численно-буквенным кодом (число и одна буква), также численно-буквенным кодом идентифицируются авиарейсы, то есть для хранения информации о рейсах поездов или самолетов в качестве идентификатора удобно было бы использовать не число, а текстовую строку.
Структура данных, позволяющая идентифицировать ее элементы не по числовому индексу, а по произвольному, называется словарем или ассоциативным массивом. Соответствующая структура данных в языке Питон называется dict .
Рассмотрим простой пример использования словаря. Заведем словарь Capitals , где индексом является название страны, а значением — название столицы этой страны. Это позволит легко определять по строке с названием страны ее столицу.
# Создадим пустой словать Capitals Capitals = dict() # Заполним его несколькими значениями Capitals['Russia'] = 'Moscow' Capitals['Ukraine'] = 'Kiev' Capitals['USA'] = 'Washington' Countries = ['Russia', 'France', 'USA', 'Russia'] for country in Countries: # Для каждой страны из списка проверим, есть ли она в словаре Capitals if country in Capitals: print('Столица страны ' + country + ': ' + Capitals[country]) else: print('В базе нет страны c названием ' + country)
Итак, каждый элемент словаря состоит из двух объектов: ключа и значения. В нашем примере ключом является название страны, значением является название столицы. Ключ идентифицирует элемент словаря, значение является данными, которые соответствуют данному ключу. Значения ключей — уникальны, двух одинаковых ключей в словаре быть не может.
В жизни широко распространены словари, например, привычные бумажные словари (толковые, орфографические, лингвистические). В них ключом является слово-заголовок статьи, а значением — сама статья. Для того, чтобы получить доступ к статье, необходимо указать слово-ключ.
Другой пример словаря, как структуры данных — телефонный справочник. В нем ключом является имя, а значением — номер телефона. И словарь, и телефонный справочник хранятся так, что легко найти элемент словаря по известному ключу (например, если записи хранятся в алфавитном порядке ключей, то легко можно найти известный ключ, например, бинарным поиском), но если ключ неизвествен, а известно лишь значение, то поиск элемента с данным значением может потребовать последовательного просмотра всех элементов словаря.
Особенностью ассоциативного массива является его динамичность: в него можно добавлять новые элементы с произвольными ключами и удалять уже существующие элементы. При этом размер используемой памяти пропорционален размеру ассоциативного массива. Доступ к элементам ассоциативного массива выполняется хоть и медленнее, чем к обычным массивам, но в целом довольно быстро.
В языке Питон ключом может быть произвольный неизменяемый тип данных: целые и действительные числа, строки, кортежи. Ключом в словаре не может быть множество, но может быть элемент типа frozenset : специальный тип данных, являющийся аналогом типа set , который нельзя изменять после создания. Значением элемента словаря может быть любой тип данных, в том числе и изменяемый.
Когда нужно использовать словари
- Подсчет числа каких-то объектов. В этом случае нужно завести словарь, в котором ключами являются объекты, а значениями — их количество.
- Хранение каких-либо данных, связанных с объектом. Ключи — объекты, значения — связанные с ними данные. Например, если нужно по названию месяца определить его порядковый номер, то это можно сделать при помощи словаря Num[‘January’] = 1; Num[‘February’] = 2; . .
- Установка соответствия между объектами (например, “родитель—потомок”). Ключ — объект, значение — соответствующий ему объект.
- Если нужен обычный массив, но масимальное значение индекса элемента очень велико, и при этом будут использоваться не все возможные индексы (так называемый “разреженный массив”), то можно использовать ассоциативный массив для экономии памяти.
Создание словаря
Пустой словарь можно создать при помощи функции dict() или пустой пары фигурных скобок <> (вот почему фигурные скобки нельзя использовать для создания пустого множества). Для создания словаря с некоторым набором начальных значений можно использовать следующие конструкции:
Capitals = Capitals = dict(Russia = 'Moscow', Ukraine = 'Kiev', USA = 'Washington') Capitals = dict([("Russia", "Moscow"), ("Ukraine", "Kiev"), ("USA", "Washington")]) Capitals = dict(zip(["Russia", "Ukraine", "USA"], ["Moscow", "Kiev", "Washington"])) print(Capitals)
Первые два способа можно использовать только для создания небольших словарей, перечисляя все их элементы. Кроме того, во втором способе ключи передаются как именованные параметры функции dict , поэтому в этом случае ключи могут быть только строками, причем являющимися корректными идентификаторами. В третьем и четвертом случае можно создавать большие словари, если в качестве аргументов передавать уже готовые списки, которые могут быть получены не обязательно перечислением всех элементов, а любым другим способом построены по ходу исполнения программы. В третьем способе функции dict нужно передать список, каждый элемент которого является кортежем из двух элементов: ключа и значения. В четвертом способе используется функция zip , которой передаются два списка одинаковой длины: список ключей и список значений.
Работа с элементами словаря
Основная операция: получение значения элемента по ключу, записывается так же, как и для списков: A[key] . Если элемента с заданным ключом нет в словаре, то возникает исключение KeyError .
Другой способ определения значения по ключу — метод get : A.get(key) . Если элемента с ключом get нет в словаре, то возвращается значение None . В форме записи с двумя аргументами A.get(key, val) метод возвращает значение val , если элемент с ключом key отсутствует в словаре.
Проверить принадлежность элемента словарю можно операциями in и not in , как и для множеств.
Для добавления нового элемента в словарь нужно просто присвоить ему какое-то значение: A[key] = value .
Для удаления элемента из словаря можно использовать операцию del A[key] (операция возбуждает исключение KeyError , если такого ключа в словаре нет. Вот два безопасных способа удаления элемента из словаря.
A = key = 'ac' if key in A: del A[key] try: del A[key] except KeyError: print('There is no element with key "' + key + '" in dict') print(A)
В первом случае мы предварительно проверяем наличие элемента, а во втором — перехватываем и обрабатываем исключение.
Еще один способ удалить элемент из словаря: использование метода pop : A.pop(key) . Этот метод возвращает значение удаляемого элемента, если элемент с данным ключом отсутствует в словаре, то возбуждается исключение. Если методу pop передать второй параметр, то если элемент в словаре отсутствует, то метод pop возвратит значение этого параметра. Это позволяет проще всего организовать безопасное удаление элемента из словаря: A.pop(key, None) .
Перебор элементов словаря
Можно легко организовать перебор ключей всех элементов в словаре:
A = dict(zip('abcdef', list(range(6)))) for key in A: print(key, A[key])
Следующие методы возвращают представления элементов словаря. Представления во многом похожи на множества, но они изменяются, если менять значения элементов словаря. Метод keys возвращает представление ключей всех элементов, метод values возвращает представление всех значений, а метод items возвращает представление всех пар (кортежей) из ключей и значений.
Соответственно, быстро проверить, есть ли значение val среди всех значений элементов словаря A можно так: val in A.values() , а организовать цикл так, чтобы в переменной key был ключ элемента, а в переменной val , было его значение можно так:
A = dict(zip('abcdef', list(range(6)))) for key, val in A.items(): print(key, val)
Изменение данных в словаре — 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 студентов
Наши выпускники работают в компаниях:
