Как напечатать ключ словаря в питоне
Словарь (dictionary) в языке Python хранит коллекцию элементов, где каждый элемент имеет уникальный ключ и ассоциированое с ним некоторое значение.
Определение словаря имеет следующий синтаксис:
dictionary =
В фигурных скобках через запятую определяется последовательность элементов, где для каждого элемента сначала указывается ключ и через двоеточие его значение.
users =
В словаре users в качестве ключей используются числа, а в качестве значений — строки. То есть элемент с ключом 1 имеет значение «Tom», элемент с ключом 2 — значение «Bob» и т.д.
emails =
В словаре emails в качестве ключей используются строки — электронные адреса пользователей и в качестве значений тоже строки — имена пользователей.
Но необязательно ключи и строки должны быть однотипными. Они могу представлять разные типы:
objects =
Мы можем также вообще определить пустой словарь без элементов:
objects = <>
objects = dict()
Преобразование списков и кортежей в словарь
Несмотря на то, что словарь и список — непохожие по структуре типы, но тем не менее существует возможности для отдельных видов списков преобразования их в словарь с помощью встроенной функции dict() . Для этого список должен хранить набор вложенных списков. Каждый вложенный список должен состоять из двух элементов — при конвертации в словарь первый элемент станет ключом, а второй — значением:
users_list = [ [«+111123455», «Tom»], [«+384767557», «Bob»], [«+958758767», «Alice»] ] users_dict = dict(users_list) print(users_dict) #
Подобным образом можно преобразовать в словарь двухмерные кортежи, которые в свою очередь содержать кортежи из двух элементов:
users_tuple = ( ("+111123455", "Tom"), ("+384767557", "Bob"), ("+958758767", "Alice") ) users_dict = dict(users_tuple) print(users_dict)
Получение и изменение элементов
Для обращения к элементам словаря после его названия в квадратных скобках указывается ключ элемента:
dictionary[ключ]
Например, получим и изменим элементы в словаре:
users = < "+11111111": "Tom", "+33333333": "Bob", "+55555555": "Alice" ># получаем элемент с ключом "+11111111" print(users["+11111111"]) # Tom # установка значения элемента с ключом "+33333333" users["+33333333"] = "Bob Smith" print(users["+33333333"]) # Bob Smith
Если при установки значения элемента с таким ключом в словаре не окажется, то произойдет его добавление:
users["+4444444"] = "Sam"
Но если мы попробуем получить значение с ключом, которого нет в словаре, то Python сгенерирует ошибку KeyError:
user = users["+4444444"] # KeyError
И чтобы предупредить эту ситуацию перед обращением к элементу мы можем проверять наличие ключа в словаре с помощью выражения ключ in словарь . Если ключ имеется в словаре, то данное выражение возвращает True:
key = "+4444444" if key in users: user = users[key] print(user) else: print("Элемент не найден")
Также для получения элементов можно использовать метод get , который имеет две формы:
- get(key) : возвращает из словаря элемент с ключом key. Если элемента с таким ключом нет, то возвращает значение None
- get(key, default) : возвращает из словаря элемент с ключом key. Если элемента с таким ключом нет, то возвращает значение по умолчанию default
users = < "+11111111": "Tom", "+33333333": "Bob", "+55555555": "Alice" >user1 = users.get("+55555555") print(user1) # Alice user2 = users.get("+33333333", "Unknown user") print(user2) # Bob user3 = users.get("+44444444", "Unknown user") print(user3) # Unknown user
Удаление
Для удаления элемента по ключу применяется оператор del :
users = < "+11111111": "Tom", "+33333333": "Bob", "+55555555": "Alice" >del users[«+55555555»] print(users) #
Но стоит учитывать, что если подобного ключа не окажется в словаре, то будет выброшено исключение KeyError. Поэтому опять же перед удалением желательно проверять наличие элемента с данным ключом.
users = < "+11111111": "Tom", "+33333333": "Bob", "+55555555": "Alice" >key = "+55555555" if key in users: del users[key] print(f"Элемент с ключом удален") else: print("Элемент не найден")
Другой способ удаления представляет метод pop() . Он имеет две формы:
- pop(key) : удаляет элемент по ключу key и возвращает удаленный элемент. Если элемент с данным ключом отсутствует, то генерируется исключение KeyError
- pop(key, default) : удаляет элемент по ключу key и возвращает удаленный элемент. Если элемент с данным ключом отсутствует, то возвращается значение default
users = < "+11111111": "Tom", "+33333333": "Bob", "+55555555": "Alice" >key = "+55555555" user = users.pop(key) print(user) # Alice user = users.pop("+4444444", "Unknown user") print(user) # Unknown user
Если необходимо удалить все элементы, то в этом случае можно воспользоваться методом clear() :
users.clear()
Копирование и объединение словарей
Метод copy() копирует содержимое словаря, возвращая новый словарь:
users = students = users.copy() print(students) #
Метод update() объединяет два словаря:
users = users2 = users.update(users2) print(users) # print(users2) #
При этом словарь users2 остается без изменений. Изменяется только словарь users, в который добавляются элементы другого словаря. Но если необходимо, чтобы оба исходных словаря были без изменений, а результатом объединения был какой-то третий словарь, то можно предварительно скопировать один словарь в другой:
users3 = users.copy() users3.update(users2)
Перебор словаря
Для перебора словаря можно воспользоваться циклом for:
users = < "+11111111": "Tom", "+33333333": "Bob", "+55555555": "Alice" >for key in users: print(f"Phone: User: ")
При переборе элементов мы получаем ключ текущего элемента и по нему можем получить сам элемент.
Другой способ перебора элементов представляет использование метода items() :
users = < "+11111111": "Tom", "+33333333": "Bob", "+55555555": "Alice" >for key, value in users.items(): print(f"Phone: User: ")
Метод items() возвращает набор кортежей. Каждый кортеж содержит ключ и значение элемента, которые при переборе мы тут же можем получить в переменные key и value.
Также существуют отдельно возможности перебора ключей и перебора значений. Для перебора ключей мы можем вызвать у словаря метод keys() :
for key in users.keys(): print(key)
Правда, этот способ перебора не имеет смысла, так как и без вызова метода keys() мы можем перебрать ключи, как было показано выше.
Для перебора только значений мы можем вызвать у словаря метод values() :
for value in users.values(): print(value)
Комплексные словари
Кроме простейших объектов типа чисел и строк словари также могут хранить и более сложные объекты — те же списки, кортежи или другие словари:
users = < "Tom": < "phone": "+971478745", "email": "tom12@gmail.com" >, "Bob": < "phone": "+876390444", "email": "bob@gmail.com", "skype": "bob123" >>
В данном случае значение каждого элемента словаря в свою очередь представляет отдельный словарь.
Для обращения к элементам вложенного словаря соответственно необходимо использовать два ключа:
old_email = users[«Tom»][«email»] users[«Tom»][«email»] = «supertom@gmail.com» print(users[«Tom»]) #
Но если мы попробуем получить значение по ключу, который отсутствует в словаре, Python сгенерирует исключение KeyError:
tom_skype = users["Tom"]["skype"] # KeyError
Чтобы избежать ошибки, можно проверять наличие ключа в словаре:
key = "skype" if key in users["Tom"]: print(users["Tom"]["skype"]) else: print("skype is not found")
Во всем остальном работа с комплексными и вложенными словарями аналогична работе с обычными словарями.
Как распечатать элементы словаря в Python
Чтобы напечатать элементы словаря пары ключ:значение, вы можете использовать dict.items(), dict.keys() или dict.values.(), функцию print().
В этом руководстве мы рассмотрим примеры программ, чтобы напечатать словарь как одну строку, словарь пары ключ:значений по отдельности, ключи словаря и значения словаря.
Распечатать словарь, как одну строку
Чтобы распечатать все содержимое словаря, вызовите функцию print() со словарем, переданным в качестве аргумента. print() преобразует словарь в одностроковый литерал и выводит на стандартный вывод консоли.
В следующей программе мы инициализируем словарь и распечатаем его целиком.
dictionary = print(dictionary)
Как распечатать пары ключ:значение?
Чтобы распечатать пары ключ:значение в словаре, используйте цикл for и оператор печати для их печати. dict.items() возвращает итератор для пар ключ:значение во время каждой итерации.
В следующей программе мы инициализируем словарь и распечатаем пары ключ:значение словаря с помощью цикла For Loop.
dictionary = for key,value in dictionary.items(): print(key, ':', value)
a : 1 b : 2 c : 3
Печать ключей словаря
Чтобы напечатать ключи словаря, используйте цикл for для обхода ключей с помощью итератора dict.keys() и вызова функции print().
В следующей программе мы инициализируем словарь и распечатаем ключи словаря с помощью For Loop.
dictionary = for key in dictionary.keys(): print(key)
a b c
Печать значения словаря
Чтобы распечатать значения словаря, используйте цикл for для просмотра значений словаря с помощью итератора dict.values() и вызова функции print().
В следующей программе мы инициализируем словарь и распечатаем значения словаря с помощью For Loop.
dictionary = for value in dictionary.values(): print(value)
Словари Python
Словарем в языке программирования Python называется неупорядоченный набор данных произвольного типа с доступом по ключу. Элементами такой коллекции выступают пары объектов, каждая из которых включает в себя ключ и значение. Для работы со словарями доступны функции, меняющие их содержимое и выполняющие различные операции над ними. Его можно конвертировать в другие типы данных, например, в строку.
Создание
Перед тем как начать работу со словарем, его нужно создать. Сделать это можно базовыми средствами языка, присвоив свободной переменной произвольное количество пар объектов. Элементы необходимо поместить в фигурные скобки, а между ключом и значением должен стоять символ двоеточия. Следующий пример демонстрирует создание словаря под именем a, который включает в себя ключи в виде чисел и значения в виде строк.
a = print(a)
Вывести содержимое словаря можно стандартной функцией print, указав для нее в качестве аргумента нужный набор данных. Для заполнения словаря также используется метод dict, получающий произвольное количество пар ключей и значений. В таком случае быть ключом может только строка, как это показано в следующем примере кода.
a = dict(one = 1, two = 2, three = 3) print(a)
Как и в прошлый раз, функция print отображает содержимое словаря a. В данном случае имеется пары объектов, представленных также в виде чисел и строк.
Добавление элемента
В Python 3 содержимое словаря можно в любой момент изменить по своему усмотрению. К примеру, для того чтобы внести в коллекцию новую пару объектов необходимо всего лишь указать новый ключ в квадратных скобках, а также соответствующее ему значение.
a = a[4] = «four» print(a)
В приведенном выше коде применяется оператор присваивания, благодаря чему новая пара (4 : “four”) помещается в конец уже созданной ранее коллекции a.
Объединение словарей
В том случае, если возникла необходимость в перемещении данных из одного словаря в другой, стоит воспользоваться функцией объединения update. Вызвать ее нужно на объекте, который предполагается расширить новыми парами ключей и значений. Вот пример как в Python добавить в словарь словарь:
a = b = a.update(b) print(a)
Результатом работы метода print станет вывод на экран обновленного содержимого словаря под названием a.
После объединения, новые элементы были автоматически записаны в конец коллекции.
Удаление элемента
Если словарь содержит лишнюю информацию, от нее можно легко избавиться при помощи специальной операции del. Для ее выполнения необходимо указать имя коллекции, а также ключ в квадратных скобках. Следующий пример показывает удаление пары.
a = del a[3] print(a)
Так как операция получила ключ 3, в результате ее работы удалилось и значение three.
Получение размера
Функция len позволяет в любой момент определить текущее количество элементов словаря, если передать ей в качестве аргумента имя коллекции. В приведенном ниже примере метод print осуществляет вывод на экран размерность словаря a.
a = print(len(a)) 3
Стоит заметить, что функция len возвращает точное количество пар, но не объектов. В этом случае имеется словарь, который содержит в себе ровно 3 пары.
Перебор словаря
Произвести перебор элементов словаря можно несколькими способами, в зависимости от желаемой для получения информации о его содержимом.
Перебор элементов можно осуществить с целью получения для последующей обработки:
- Пар ключ-значение;
- Перебор всех ключей;
- Перебор значений.
В данном примере показывается как вывести на экран все пары этой коллекции в формате ключ : значение. Для этого используется цикл for и функция items, работающая с элементами словаря.
a = for key, value in a.items(): print(key, ":", value) 1 : one 2 : two 3 : three
Чтобы получить только ключи, следует применить метод keys, вызывав его на словаре.
a = for key in a.keys(): print(key) 1 2 3
Аналогичным образом нужно поступить, чтобы вывести только значения словаря. Однако в таком случае в цикле for используется метод values.
a = for val in a.values(): print(val) one two three
В обоих случаях отображается только выбранная часть пары, ключ или значение.
Поиск
Проверить наличие определенного ключа можно при помощи операции in. Для этого достаточно вывести результат ее выполнения для словаря по имени a.
a = print(2 in a) print(4 in a) True False
Как можно заметить, проверка ключа 2 дала положительный результат (True). Во втором случае вывелось значение False, поскольку ключа 4 в словаре не обнаружено.
Сортировка
Средства языка дают возможность проводить в Python сортировку словаря по ключам и значениям, в зависимости от необходимости. В следующем примере имеется коллекция данных по имени a, в которой содержится информация в произвольном порядке. Ключами здесь выступают числа, а значениями являются строки. Сортировка осуществляется за счет импортированного модуля operator и встроенного метода itemgetter, получающего 0 или 1.
import operator a = b = sorted(a.items(), key = operator.itemgetter(0)) print(b) b = sorted(a.items(), key = operator.itemgetter(1)) print(b) [(1, 'one'), (2, 'two'), (3, 'three')] [(1, 'one'), (3, 'three'), (2, 'two')]
Как можно заметить, аргумент 0 позволяет отсортировать словарь по ключу, в то время как 1 дает возможность вывести его содержимое в алфавитном порядке значений.
Сравнение
Иногда нужно удостовериться, что два словаря содержат абсолютно одинаковые данные, либо узнать какая коллекция больше или меньше по размеру. В этом случае на помощь приходит метод cmp, получающий в качестве параметров два словаря.
a = b = c = print(cmp(a, b)) print(cmp(b, c)) print(cmp(a, c)) 1 -1 0
Приведенный код продемонстрировал выполнение метода cmp с трема комбинациями аргументов. Как видно из результатов выдачи, функция возвращает 1, если первый больше второго, -1, если наоборот и 0, когда данные полностью идентичны.
Копирование
Метод copy используется для копирования содержимого одного словаря в другой. Данный пример демонстрирует перенос ключей и значений из коллекции a в b.
a = b = a.copy() print(b)
Как можно заметить, порядок и содержимое всех пар было сохранено в новом наборе.
Очистка
Чтобы избавиться от всех элементов словаря, стоит вызвать для него функцию clear.
a = a.clear() print(a) <>
В результате получается абсолютно пустой набор данных.
Генератор словарей
Как и с другими наборами данных, производить заполнение словарей можно при помощи генераторов. В следующем примере демонстрируется создание числовых пар коллекции с использованием генератора словарей Python с методом range, получающего в качестве аргумента 5.
a = print(a)
Таким образом, на выходе получается словарь a, включающий в себя ровно 5 пар. Ключами являются числа от 0 до 4, а значениями выступают их математические квадраты.
Конвертация в строку
Словарь можно очень легко преобразовать в строку для более удобной работы с цельным представлением его содержимого. Чтобы сделать это, потребуется функция str. Как можно видеть из результатов выполнения метода type, конвертация прошла успешно.
a = b = str(a) print(b) print(type(b))
Аналогичным образом происходит обратное преобразование строки Python в словарь. Важно, чтобы ее текстовое содержимое подходило по структуре под рассматриваемую коллекцию.
a = » b = eval(a) print(b) print(type(b))
Как видно из примера, метод eval конвертирует весь текст строки в новый словарь.
Вложенные
В Python словари могут быть вложенными, то есть выступать частью другого более крупного словаря. При помощи уже знакомых ранее фигурных скобок и двоеточий можно обозначить границы этого набора данных и указать программе пары ключей со значениями.
a = < "First": < 1: "one", 2: "two", 3: "three" >, "Second": < 4: "four", 5: "five" >> print(a) , 'Second': >
В примере, описанном выше, создается словарь a, включающий в себя два других словаря (First и Second). Те, в свою очередь, содержат несколько пар ключей и значений.
Резюме
Следующая таблица демонстрирует краткую сводку по всем рассмотренным методам для работы со словарями в Python 3. В таблице отображаются названия методов, а также информация о их назначении.
Название | Назначение |
update | Объединение содержимого двух словарей в один |
len | Получение размера |
items | Возвращает пары (ключи и значения) |
keys | Возвращает ключи |
values | Возвращает значения |
copy | Копирует содержимое в другой словарь |
clear | Полная очистка всех элементов |
eval | Конвертация строки в словарь |
Как напечатать ключ словаря в питоне
Поговорим о словарях. Не тех, конечно, что составили Даль или Ожегов, а о словарях в Python. Словарь в Python — это неупорядоченный набор элементов. Давайте на примере разберемся, что это такое и как работает.
Видео: Глеб Лиманский
Создать пустой словарь можно с помощью фигурных скобок. Или с помощью функции dict().
Но давайте наполним наш словарь данными и посмотрим, как это работает. Вот, например, словарь, в котором хранятся данные о трех о публичных должностных лицах с самым высоким декларируемым доходом. Имя должностного лица это ключ, а доход — это значение.
И мы можем обращаться к словарям в питоне именно по ключу. Сначала указываем словарь, затем в квадратных скобках ключ. Вернется значение.
Через ключ же в словарь можно и добавлять новые элементы. Давайте добавим Владимира Путина и его декларируемый доход за 2019 год. И сразу проверим, добавился ли он в словарь.
Только важно понимать, что между уже известными вам списками и словарями есть существенная разница. Списки — это упорядоченный набор данных, а словари — неупорядоченный. Поэтому элементы в словаре не имеют индекса. Нельзя посмотреть, каким по счет идет Владимир Путин, и использовать этот номер, чтобы обратиться к нему. Подобная попытка закончится ошибкой.
Эта ошибка означает, что в словаре нет такого ключа как 3, число которое мы пытались использовать в качестве индекса элемента. Обращаться к словарям можно только по ключу. Поэтому, если значения, которое вы указываете в квадратных скобках, нет в словаре — получите такую же ошибку. Но есть еще один способ, как можно получать значения из словаря, но не опасаться при этом ошибок. Это метод .get().
Нравятся наши лекции? Поддержите нас!
Ваше пожертвование поможет нам готовить еще больше выпусков Мастерской
Поддержать «Важные истории»
В скобочках вы указываете ключ, значение которого хотите получить, а через запятую указываете то, что хотите получить в случае, если такого ключа нет в словаре. В примере мы получим строку «нет ключа» в ответ. Если через запятую не указывать ничего, то по умолчанию будет возвращаться None.
В словарях ключами и значениями могут быть разные типы данных. Например, и то, и другое может быть числом. Только если ваш ключ — это число, то указывать его в квадратных скобках при обращении нужно тоже как число. Если вы укажете его в кавычках, то это будет уже другое значение. Вы снова получите ошибку, что такого ключа нет в словаре.
Значениями в словаре так же могут быть и списки. Давайте теперь в словарь добавим элемент, ключом которого будет снова Владимир Путин, а значение — его декларируемый доход за последние три года в виде списка.
Обратите внимание, что запись с Владимиром Путиным, где был доход только за 2019 год исчезла, осталась только последняя добавленная нами запись с доходами за последние три года. Дело в том, что в словаре не может существовать двух элементов с одинаковым ключом. Если вы добавите элемент с ключом, который уже есть в словаре, то он просто перезапишется.
Подписывайтесь на рассылку «Мастерской»
Вы узнаете о крутых инструментах для сбора, анализа и визуализации данных
Удалять элемент из словаря можно с помощью .pop(). В скобках нужно указать ключ элемента. Он удалится, и вам вернется удаленное значение. Давайте попробуем удалить Владимира Путина хотя бы из словаря.
Еще словари хороши тем, что мы можем получить отдельно список всех ключей и всех значение. Для первого нам поможем метод .keys(), а для второго — .values().
Создадим новый словарь, в котором у нас будут храниться доходы за последние три года Владимира Путина и Дмитрия Медведева. И напишем небольшой код, который будет перебирать элементы этого словаря и печатать нам сообщение о том, у кого каким за последние три года был минимальный доход. И для решения этой задачки нам потребуется еще один метод словаря .items(). Если метод .keys() позволял нам получить список всех ключей, этот список мы могли перебирать, по аналогии же работает .values(), то .items() позволяет попарно перебирать и ключ, и значение.
Нам осталось только перебирая ключи и значения, определить минимальный доход и вывести сообщение на экран. Для этого используем функцию min(), которая вернет минимальное значение из списка и print().
Это и есть основные методы словаря, которые чаще всего используются в работе. Еще больше методов словаря можете посмотреть здесь. А ссылка на тетрадку Jupyter Notebook как всегда на нашем GitHub здесь.