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

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

  • автор:

Извлечение значения по ключу словаря в Python

Операция dict[key] вернет элемент словаря dict с ключом key . Операция вызывает исключение KeyError , если ключ key отсутствует в словаре.

Если подкласс dict определяет метод __missing__() и ключ отсутствует, операция d[key] вызывает этот метод с ключом key в качестве аргумента. Затем операция d[key] возвращает или вызывает все, что было возвращено или вызвано вызовом __missing__(key) . Никакие другие операции или методы не вызывают __missing__() . Если __missing__() не определен, то возникает KeyError .

__missing__() должен быть методом, он не может быть переменной экземпляра.

>>> class Counter(dict): . def __missing__(self, key): . return 0 >>> c = Counter() >>> c['red'] 0 >>> c['red'] += 1 >>> c['red'] 1 

В приведенном выше примере показана часть реализации collections.Counter .

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

>>> x = 'one': 1, 'two': 2, 'three': 3, 'four': 4> >>> x['two'] # 2 >>> x['four'] # 4 >>> x['ten'] # Traceback (most recent call last): # File "", line 1, in # KeyError: 'ten' 
  • ОБЗОРНАЯ СТРАНИЦА РАЗДЕЛА
  • Представления словарей 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: 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

Словарь создают с помощью ключевого слова dict, синтаксиса языка.

Словари (dict) в Pythoт

Анастасия Хамидулина
Автор статьи
13 июня 2022 в 15:01

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

Как работать со словарями в Python

�� Создать

Ключевое слово dict

В Python есть множество встроенных функций. В том числе, чтобы получить стандартные структуры данных или преобразовать объекты к этим структурам. Если нужно создать пустой словарь, напишите:

my_new_dict = dict()

Еще, чтобы получить объект словаря, можно использовать синтаксис языка:

another_dict =

Третий способ: применить выражение — генератор словаря. Это помогает составить словарь из пары итерируемых объектов, то есть объектов, которые можно повторять. Например:

list_one = ["one", "two", "three", "four", "five"] list_two = [1, 2, 3, 4, 5] the_dict = <> for k, v in zip(list_one, list_two): the_dict[k] = v + 1 print(the_dict["one"]) 2 print(the_dict["two"]) 3 print(the_dict.keys()) dict_keys(['one', 'two', 'three', 'four', 'five'])

Здесь каждое значение словаря было инкрементировано: то есть мы увеличили значение переменной. Но если вам не нужно преобразовывать значения, используйте более короткую конструкцию:

list_one = ["one", "two", "three", "four", "five"] list_two = [1, 2, 3, 4, 5] the_dict = dict(zip(list_one, list_two))

�� Получить значения

Для этого нужно обратиться к объекту словаря и указать нужный ключ:

the_dict = let_a = the_dict[0] let_b = the_dict[1] print(f" -- ") AB -- CD

�� Добавить, изменить и удалить элементы

Нужно обратиться по ключу к объекту словаря, выполнить операцию присваивания:

# добавление элементов the_dict = <> the_dict["my_key"] = "some value" the_dict["my_another_key"] = 42 # изменение элементов the_dict["my_key"] = "yet another value" # удаление элементов del the_dict["my_key"]

�� Проверить наличие ключа

Чтобы проверить, есть ли указанный ключ в словаре, используйте ключевое слово in или метод get словаря:

the_dict = print("c" in the_dict) False print("a" in the_dict) True

Метод get объекта словаря возвращает найденное значение в словаре по ключу. Или значение, указанное как стандартное возвращаемое, — если ключ не найден:

the_dict = if not the_dict.get("A", None): print("Такой ключ не найден") Такой ключ не найден a = the_dict.get("a", None) print(a) 1

�� Скопировать словарь

Чтобы получить неглубокую копию, вызовите метод copy или примените метод модуля copy: copy.copy. Если нужна глубокая, нужен метод copy.deepcopy.

import copy the_dict = dict_copy = the_dict.copy() dict_copy2 = copy.copy(the_dict) # то же самое, что и в примере выше deep_copy = copy.deepcopy(the_dict) # полная, глубокая копия

�� Определить длину словаря

Узнайте, сколько ключей содержит словарь, с помощью встроенной функции len. Она возвращает количество итерируемых объектов.

the_dict = length = len(the_dict) print(length) 2

Этому учат на курсе Skypro «Python-разработчик». Программа построена так, что вы упражняетесь на реальных задачах, а не просто изучаете отдельные блоки. В результате свои курсовые работы сможете положить в портфолио, чтобы повысить шансы найти хорошую работу еще в процессе обучения.

Python-разработчик: новая работа через 9 месяцев
Получится, даже если у вас нет опыта в IT

Итерация словаря

Pandas: обзор библиотеки для Python

Ключи, значения или всё вместе получают с помощью трех методов словаря. Для ключей — keys, для значений — values, для ключей и значений — items. Вызывать метод keys необязательно, так как при попытке итерации по словарю по умолчанию будут использоваться его ключи. По всем полученным данным можно произвести итерацию — повторить какое-либо действие.

✔️ По ключам

the_dict = for k in the_dict.keys(): print(k) print(the_dict[k]) a 1 b 2

Keys используется по умолчанию, чтобы получить объект итератора:

the_dict = for k in the_dict: # вызова keys не происходит print(k) print(the_dict[k]) a 1 b 2

✔️ По значениям

the_dict = for v in the_dict.values(): print(v) 1 2

✔️ По ключам и значениям

Пример распаковки кортежа вида «ключ, значение», чтобы сохранить их в отдельные переменные:

the_dict = for k, v in the_dict.items(): print(f" - ") a - 1 b - 2

Другие методы

✔️ fromkeys

Этот метод позволяет создавать словари с ключами, полученными из итерируемого объекта. В качестве значения по умолчанию используется второй аргумент функции:

the_list = ["a", "b"] the_dict = dict.fromkeys(the_list, False) for v in the_dict.values(): print(v) False False for k in the_dict: print(k) a b

✔️ setdefault

Метод помогает указать стандартное значение ключа. При этом не изменять его, если оно уже есть по переданному ключу:

the_dict = the_dict.setdefault("a", True) print(the_dict.keys()) dict_keys(['a', 'b']) print(the_dict.get("a", None)) 1

Изучить все методы можно на курсе Skypro «Python-разработчик». Опытные преподаватели-практики дадут необходимый минимум теории, помогут освоить практические навыки и поделятся лайфхаками разработки.

Вложенные словари

Словари могут содержать другие словари: в Python их называют вложенными. Они полезны при сериализации и десериализации. Их создают так:

the_dict = nested_dict = the_dict["color"] = nested_dict print(the_dict) >

Альтернативные типы данных

В старых версиях Python ключи словаря не были упорядочены. Чтобы решить эту проблему, использовали модуль collections, а именно объект OrderedDict. Этот модуль тоже содержит и другие варианты словаря.

✔️ OrderedDict

Вместо типичной реализации по типу хеш-таблицы эта использует список кортежей, чтобы сохранять порядок ключей. В новых версиях языка в этом объекте уже нет смысла:

import collections the_dict = collections.OrderedDict() print(the_dict) OrderedDict([('a', 1), ('b', 2), (3, 'c')]) the_dict["d"] = "value" print(the_dict) OrderedDict([('a', 1), ('b', 2), (3, 'c'), ('d', 'value')])

✔️ Defaultdict

Объект класса defaultdict позволяет избежать ошибки KeyError при обращении к несуществующему ключу. Он возвращает стандартное значение, вычисляемое указанной функцией:

from collections import defaultdict def get_value(): return "Ключ не указан" the_dict = defaultdict(get_value) the_dict["a"] = 1 the_dict["b"] = 2 print(the_dict["a"]) 1 print(the_dict["b"]) 2 print(the_dict["c"]) Ключ не указан

✔️ Counter

Объект класса Counter полезен, когда нужно получить количество повторов объектов итерируемой сущности:

from collections import Counter the_string = "AABCBBCAACBCABBABABBACCACBCBBBCA" the_counter = Counter(the_string) print(the_counter) Counter()

Python. Урок 9. Словари (dict)

Follow us on Google Plus Follow us on rss

Словари (dict) – это одна из наиболее часто используемых структур данных, позволяющая хранить объекты, для доступа к которым используется ключ. В этом уроке будут рассмотрены операции создания, удаления, работы со словарями и их методы.

Что такое словарь (dict) в Python?

Словарь (dict) представляет собой структуру данных (которая ещё называется ассоциативный массив), предназначенную для хранения произвольных объектов с доступом по ключу. Данные в словаре хранятся в формате ключ – значение. Если вспомнить такую структуру как список, то доступ к его элементам осуществляется по индексу, который представляет собой целое неотрицательное число, причем мы сами, непосредственно, не участвуем в его создании (индекса). В словаре аналогом индекса является ключ, при этом ответственность за его формирование ложится на программиста.

Создание, изменение, удаление словарей и работа с его элементами

Создание словаря
Пустой словарь можно создать, используя функцию dict(), либо просто указав пустые фигурные скобки.

>>> d1 = dict() >>> print(type(d1)) class 'dict'> >>> d2 = <> >>> print(type(d2)) class 'dict'> 

Если необходимо создать словарь с заранее подготовленным набором данных, то можно использовать один из перечисленных выше подходов, но с перечислением групп ключ-значение.

>>> d1 = dict(Ivan="manager", Mark="worker") >>> print(d1) 'Mark': 'worker', 'Ivan': 'manager'> >>> d2 = "A1":"123", "A2":"456"> >>> print(d2) 'A2': '456', 'A1': '123'>

Добавление и удаление элемента
Чтобы добавить элемент в словарь нужно указать новый ключ и значение.

>>> d1 = "Russia":"Moscow", "USA":"Washington"> >>> d1["China"]="Beijing" >>> print(d1) 'Russia': 'Moscow', 'China': 'Beijing', 'USA': 'Washington'>

Для удаления элемента из словаря можно воспользоваться командой del.

>>> d2 = "A1":"123", "A2":"456"> >>> del d2["A1"] >>> print(d2) 'A2': '456'>

Работа со словарем
Проверка наличия ключа в словаре производится с помощью оператора in.

>>> d2 = "A1":"123", "A2":"456"> >>> "A1" in d2 True >>> "A3" in d2 False 

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

>>> d1 = "Russia":"Moscow", "USA":"Washington"> >>> d1["Russia"] 'Moscow' 

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

У словарей доступен следующий набор методов.

clear()
Удаляет все элементы словаря.

>>> d2 = "A1":"123", "A2":"456"> >>> print(d2) 'A2': '456', 'A1': '123'> >>> d2.clear() >>> print(d2) <>

copy()
Создается новая копия словаря.

>>> d2 = "A1":"123", "A2":"456"> >>> d3 = d2.copy() >>> print(d3) 'A1': '123', 'A2': '456'> >>> d3["A1"]="789" >>> print(d2) 'A2': '456', 'A1': '123'> >>> print(d3) 'A1': '789', 'A2': '456'>

fromkeys(seq[, value])
Создает новый словарь с ключами из seq и значениями из value. По умолчанию value присваивается значение None.

get(key)
Возвращает значение из словаря по ключу key.

>>> d = "A1":"123", "A2":"456"> >>> d.get("A1") '123' 

items()
Возвращает элементы словаря (ключ, значение) в отформатированном виде.

>>> d = "A1":"123", "A2":"456"> >>> d.items() dict_items([('A2', '456'), ('A1', '123')])

keys()
Возвращает ключи словаря.

>>> d = "A1":"123", "A2":"456"> >>> d.keys() dict_keys(['A2', 'A1'])

pop(key[, default])
Если ключ key есть в словаре, то данный элемент удаляется из словаря и возвращается значение по этому ключу, иначе будет возвращено значение default. Если default не указан и запрашиваемый ключ отсутствует в словаре, то будет вызвано исключение KeyError.

>>> d = "A1":"123", "A2":"456"> >>> d.pop("A1") '123' >>> print(d) 'A2': '456'>

popitem()
Удаляет и возвращает пару (ключ, значение) из словаря. Если словарь пуст, то будет вызвано исключение KeyError.

>>> d = "A1":"123", "A2":"456"> >>> d.popitem() ('A2', '456') >>> print(d) 'A1': '123'>

setdefault(key[, default])
Если ключ key есть в словаре, то возвращается значение по ключу. Если такого ключа нет, то в словарь вставляется элемент с ключом key и значением default, если default не определен, то по умолчанию присваивается None.

>>> d = "A1":"123", "A2":"456"> >>> d.setdefault("A3", "777") '777' >>> print(d) 'A2': '456', 'A3': '777', 'A1': '123'> >>> d.setdefault("A1") '123' >>> print(d) 'A2': '456', 'A3': '777', 'A1': '123'>

update([other])
Обновить словарь парами (key/value) из other, если ключи уже существуют, то обновить их значения.

>>> d = "A1":"123", "A2":"456"> >>> d.update("A1":"333", "A3":"789">) >>> print(d) 'A2': '456', 'A3': '789', 'A1': '333'>

values()
Возвращает значения элементов словаря.

>>> d = "A1":"123", "A2":"456"> >>> d.values() dict_values(['456', '123'])

P.S.

Если вам интересна тема анализа данных, то мы рекомендуем ознакомиться с библиотекой Pandas. На нашем сайте вы можете найти вводные уроки по этой теме. Все уроки по библиотеке Pandas собраны в книге “Pandas. Работа с данными”.

Раздел: Python Уроки по Python Метки: Python, Уроки Python

Python. Урок 9. Словари (dict) : 9 комментариев

  1. Иван 04.11.2018 Здравствуйте, автор. Небольшая неточность про индекс списка, который “представляет собой целое положительное число”.
    Индекс списка начинается с нуля, поэтому правильно “представляет собой целое НЕОТРИЦАТЕЛЬНОЕ число”. С уважением, Иван.
  1. writer 12.11.2018 Добрый день!
    Спасибо! Поправили)
  1. writer 27.09.2019 Метод popitem() удаляет и возвращает пару (ключ, значение) из словаря в LIFO порядке. Т.е. по принципу “последний зашел – первый вышел”. В данном случае “последний зашел” – это про “A2″:”456”. ВАЖНО! В Python 3.7 LIFO порядок гарантируется, до версии 3.7 popitem() возвращал произвольную пару (ключ, значение).
  1. reader 09.02.2021 Как вариант: str = ‘ten, one, five, two, three, four’ # Создаем строку
    str = str.split(sep=’,’) # Функция преобразования строки в список, где sep – разделитель элементов в нашей строке
    d1 = <> # Создаем пустой словарь
    for i in str: # Цикл перебора элементов в списке
    —-d1[i]=f’номер в строке’ # В каждой итерации добавляем в словарь элемент списка в качестве ключа и
    #f’номер в строке’ в качестве значения для этого ключа, где str.index(i) – индекс добавляемого элемента
    print(d1) —- это 4 пробела

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

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