Словарь 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 (последний вызов последний): файл "", строка 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)

Интересные статьи...