Словарь Питона
Словарь Python
В этом руководстве вы узнаете все о словарях Python; как они создаются, доступ, добавление, удаление элементов из них и различные встроенные методы.
Видео:Словари Python для хранения пар ключ/значение
Словарь Python представляет собой неупорядоченный набор элементов. Каждый элемент словаря имеет key/value
пара.
Словари оптимизированы для извлечения значений, когда известен ключ.
<час>Создание словаря Python
Создать словарь так же просто, как поместить элементы в фигурные скобки {}
через запятую.
Элемент имеет key
и соответствующий value
который выражается в виде пары (ключ:значение ).
Хотя значения могут относиться к любому типу данных и могут повторяться, ключи должны быть неизменяемого типа (строка, число или кортеж с неизменяемыми элементами) и должны быть уникальными.
# empty dictionary
my_dict = {}
# dictionary with integer keys
my_dict = {1: 'apple', 2: 'ball'}
# dictionary with mixed keys
my_dict = {'name': 'John', 1: [2, 4, 3]}
# using dict()
my_dict = dict({1:'apple', 2:'ball'})
# from sequence having each item as a pair
my_dict = dict([(1,'apple'), (2,'ball')])
Как вы можете видеть выше, мы также можем создать словарь, используя встроенный dict()
функция.
Доступ к элементам из словаря
В то время как индексация используется с другими типами данных для доступа к значениям, словарь использует keys
. Ключи можно использовать либо внутри квадратных скобок []
или с помощью get()
метод.
Если мы используем квадратные скобки []
, KeyError
вызывается в случае, если ключ не найден в словаре. С другой стороны, get()
метод возвращает None
если ключ не найден.
# get vs [] for retrieving elements
my_dict = {'name': 'Jack', 'age': 26}
# Output: Jack
print(my_dict['name'])
# Output: 26
print(my_dict.get('age'))
# Trying to access keys which doesn't exist throws error
# Output None
print(my_dict.get('address'))
# KeyError
print(my_dict['address'])
Вывод
Jack 26 None Traceback (most recent call last): File "<string>", line 15, in <module> print(my_dict['address']) KeyError: 'address'<час>
Изменение и добавление элементов словаря
Словари изменяемы. Мы можем добавить новые элементы или изменить значение существующих элементов с помощью оператора присваивания.
Если ключ уже присутствует, существующее значение обновляется. Если ключ отсутствует, новый (ключ:значение ) добавляется в словарь.
# Changing and adding Dictionary Elements
my_dict = {'name': 'Jack', 'age': 26}
# update value
my_dict['age'] = 27
#Output: {'age': 27, 'name': 'Jack'}
print(my_dict)
# add item
my_dict['address'] = 'Downtown'
# Output: {'address': 'Downtown', 'age': 27, 'name': 'Jack'}
print(my_dict)
Вывод
{'name': 'Jack', 'age': 27} {'name': 'Jack', 'age': 27, 'address': 'Downtown'}<час>
Удаление элементов из словаря
Мы можем удалить конкретный элемент в словаре с помощью pop()
метод. Этот метод удаляет элемент с указанным key
. и возвращает value
.
popitem()
можно использовать для удаления и возврата произвольного (key, value)
пара элементов из словаря. Все элементы можно удалить сразу, используя clear()
метод.
Мы также можем использовать del
ключевое слово для удаления отдельных элементов или всего словаря.
# Removing elements from a dictionary
# create a dictionary
squares = {1: 1, 2: 4, 3: 9, 4: 16, 5: 25}
# remove a particular item, returns its value
# Output: 16
print(squares.pop(4))
# Output: {1: 1, 2: 4, 3: 9, 5: 25}
print(squares)
# remove an arbitrary item, return (key,value)
# Output: (5, 25)
print(squares.popitem())
# Output: {1: 1, 2: 4, 3: 9}
print(squares)
# remove all items
squares.clear()
# Output: {}
print(squares)
# delete the dictionary itself
del squares
# Throws Error
print(squares)
Вывод
16 {1: 1, 2: 4, 3: 9, 5: 25} (5, 25) {1: 1, 2: 4, 3: 9} {} Traceback (most recent call last): File "<string>", line 30, in <module> print(squares) NameError: name 'squares' is not defined<час>
Методы словаря Python
Методы, доступные со словарем, приведены в таблице ниже. Некоторые из них уже использовались в приведенных выше примерах.
Метод | Описание |
---|---|
очистить() | Удаляет все элементы из словаря. |
копировать() | Возвращает поверхностную копию словаря. |
fromkeys(seq[, v]) | Возвращает новый словарь с ключами из seq и значение равно v (по умолчанию None ). |
получить(ключ[,d]) | Возвращает значение key . Если ключ не существует, возвращает d (по умолчанию None ). |
элементы() | Возвращает новый объект элементов словаря в формате (ключ, значение). |
ключи() | Возвращает новый объект ключей словаря. |
поп(ключ[,d]) | Удаляет элемент с помощью ключа и возвращает его значение или d если ключ не найден. Если d не указан, а ключ не найден, возникает KeyError . |
попитем() | Удаляет и возвращает произвольный элемент (ключ, значение ). Поднимает KeyError если словарь пуст. |
setdefault(key[,d]) | Возвращает соответствующее значение, если key есть в словаре. Если нет, вставляет ключ со значением d и возвращает d (по умолчанию None ). |
обновить([другое]) | Обновляет словарь парами ключ/значение из other. , перезаписывая существующие ключи. |
значения() | Возвращает новый объект значений словаря |
Вот несколько примеров использования этих методов.
# Dictionary Methods
marks = {}.fromkeys(['Math', 'English', 'Science'], 0)
# Output: {'English': 0, 'Math': 0, 'Science': 0}
print(marks)
for item in marks.items():
print(item)
# Output: ['English', 'Math', 'Science']
print(list(sorted(marks.keys())))
Вывод
{'Math': 0, 'English': 0, 'Science': 0} ('Math', 0) ('English', 0) ('Science', 0) ['English', 'Math', 'Science']<час>
Понимание словаря Python
Понимание словаря — это элегантный и лаконичный способ создания нового словаря из итерируемого объекта в Python.
Понимание словаря состоит из пары выражений (ключ:значение ), за которым следует for
оператор внутри фигурных скобок {}
.
Вот пример создания словаря, в котором каждый элемент представляет собой пару числа и его квадрата.
# Dictionary Comprehension
squares = {x: x*x for x in range(6)}
print(squares)
Вывод
{0: 0, 1: 1, 2: 4, 3: 9, 4: 16, 5: 25}
Этот код эквивалентен
squares = {}
for x in range(6):
squares[x] = x*x
print(squares)
Вывод
{0: 0, 1: 1, 2: 4, 3: 9, 4: 16, 5: 25}
Понимание словаря может дополнительно содержать операторы for или if.
Необязательный if
оператор может отфильтровать элементы для формирования нового словаря.
Вот несколько примеров создания словаря только с нечетными элементами.
# Dictionary Comprehension with if conditional
odd_squares = {x: x*x for x in range(11) if x % 2 == 1}
print(odd_squares)
Вывод
{1: 1, 3: 9, 5: 25, 7: 49, 9: 81}
Чтобы узнать больше о понимании словаря, посетите Python Dictionary Comprehension.
<час>Другие операции со словарем
Тест на членство в словаре
Мы можем проверить, является ли key
находится в словаре или не использует ключевое слово in
. Обратите внимание, что тест на членство предназначен только для keys
а не для values
.
# Membership Test for Dictionary Keys
squares = {1: 1, 3: 9, 5: 25, 7: 49, 9: 81}
# Output: True
print(1 in squares)
# Output: True
print(2 not in squares)
# membership tests for key only not value
# Output: False
print(49 in squares)
Вывод
True True False
Итерация по словарю
Мы можем перебрать каждый ключ в словаре, используя for
петля.
# Iterating through a Dictionary
squares = {1: 1, 3: 9, 5: 25, 7: 49, 9: 81}
for i in squares:
print(squares[i])
Вывод
1 9 25 49 81<час>
Встроенные функции словаря
Встроенные функции, такие как all()
, any()
, len()
, cmp()
, sorted()
и т. д. обычно используются со словарями для выполнения различных задач.
Функция | Описание |
---|---|
все() | Вернуть True если все ключи словаря истинны (или если словарь пуст). |
любой() | Вернуть True если какой-либо ключ словаря верен. Если словарь пуст, вернуть False . |
len() | Возвращает длину (количество элементов) в словаре. |
cmp() | Сравнивает элементы двух словарей. (Недоступно в Python 3) |
отсортировано() | Возвращает новый отсортированный список ключей в словаре. |
Вот несколько примеров использования встроенных функций для работы со словарем.
# Dictionary Built-in Functions
squares = {0: 0, 1: 1, 3: 9, 5: 25, 7: 49, 9: 81}
# Output: False
print(all(squares))
# Output: True
print(any(squares))
# Output: 6
print(len(squares))
# Output: [0, 1, 3, 5, 7, 9]
print(sorted(squares))
Вывод
False True 6 [0, 1, 3, 5, 7, 9]
Python