В этом руководстве вы узнаете все о словарях 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 (последний вызов последний): файл "", строка 15, в печати (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)
Вывод
('имя': 'Джек', 'возраст': 27) ('имя': 'Джек', 'возраст': 27, 'адрес': 'Центр города')
Удаление элементов из словаря
Мы можем удалить конкретный элемент из словаря с помощью 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) () Отслеживание (последний вызов последним): Файл "", строка 30, в печати (квадраты) NameError: имя 'squares' не определено
Методы словаря Python
Методы, доступные со словарем, представлены в таблице ниже. Некоторые из них уже использовались в приведенных выше примерах.
Метод | Описание |
---|---|
Чисто() | Удаляет все элементы из словаря. |
копия () | Возвращает частичную копию словаря. |
fromkeys (seq (, v)) | Возвращает новый словарь с ключами из seq и значением, равным v (по умолчанию None ). |
получить (ключ (, d)) | Возвращает значение ключа. Если ключ не существует, возвращает d (по умолчанию None ). |
Предметы() | Вернуть новый объект элементов словаря в формате (ключ, значение). |
ключи () | Возвращает новый объект ключей словаря. |
поп (ключ (, d)) | Удаляет элемент с ключом и возвращает его значение или d, если ключ не найден. Если d не указан и ключ не найден, он поднимается KeyError . |
popitem () | Удаляет и возвращает произвольный элемент ( ключ, значение ). Возникает, KeyError если словарь пуст. |
setdefault (ключ (, d)) | Возвращает соответствующее значение, если ключ находится в словаре. Если нет, вставляет ключ со значением d и возвращает d (по умолчанию None ). |
обновление ((другое)) | Updates the dictionary with the key/value pairs from other, overwriting existing keys. |
values() | Returns a new object of the dictionary's values |
Here are a few example use cases of these methods.
# 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())))
Output
('Math': 0, 'English': 0, 'Science': 0) ('Math', 0) ('English', 0) ('Science', 0) ('English', 'Math', 'Science')
Python Dictionary Comprehension
Dictionary comprehension is an elegant and concise way to create a new dictionary from an iterable in Python.
Dictionary comprehension consists of an expression pair (key: value) followed by a for
statement inside curly braces ()
.
Here is an example to make a dictionary with each item being a pair of a number and its square.
# Dictionary Comprehension squares = (x: x*x for x in range(6)) print(squares)
Output
(0: 0, 1: 1, 2: 4, 3: 9, 4: 16, 5: 25)
This code is equivalent to
squares = () for x in range(6): squares(x) = x*x print(squares)
Output
(0: 0, 1: 1, 2: 4, 3: 9, 4: 16, 5: 25)
A dictionary comprehension can optionally contain more for or if statements.
An optional if
statement can filter out items to form the new dictionary.
Here are some examples to make a dictionary with only odd items.
# Dictionary Comprehension with if conditional odd_squares = (x: x*x for x in range(11) if x % 2 == 1) print(odd_squares)
Output
(1: 1, 3: 9, 5: 25, 7: 49, 9: 81)
To learn more dictionary comprehensions, visit Python Dictionary Comprehension.
Other Dictionary Operations
Dictionary Membership Test
We can test if a key
is in a dictionary or not using the keyword in
. Notice that the membership test is only for the keys
and not for the 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)
Output
True True False
Iterating Through a Dictionary
We can iterate through each key in a dictionary using a for
loop.
# Iterating through a Dictionary squares = (1: 1, 3: 9, 5: 25, 7: 49, 9: 81) for i in squares: print(squares(i))
Output
1 9 25 49 81
Dictionary Built-in Functions
Встроенные функции , такие как 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))
Вывод
Ложь Истина 6 (0, 1, 3, 5, 7, 9)