Словари в Python — это списки неупорядоченных элементов, которые можно изменить с помощью встроенных методов. Элементы словаря представляют собой пары ключ-значение, причем ключи должны быть уникальными. В этой статье мы рассмотрим, как создаются словари, а также разберем, как добавлять и удалять элементы словарей и как выводить желаемые значения.
Что собой представляют словари в Python
Чтобы создать словарь, используйте фигурные скобки {}. В скобках через запятую перечисляются пары ключ-значение. Ключи отделяются от значений двоеточиями. Строки, выступающие в качестве ключей или значений, должны быть заключены в кавычки.
Словарь сопоставляет набор объектов (ключей) с другим набором объектов (значений), поэтому вы можете создать неупорядоченный список объектов.
Словари в Python изменяемы, то есть вы можете добавлять в них элементы, а также удалять и изменять их. Значения, на которые указывают ключи, могут быть любыми значениями Python.
Словари неупорядочены, поэтому порядок добавления ключей не обязательно отражает порядок, в котором они могут возвращаться. Поэтому к значениям в словаре нужно обращаться по ключам, а не по индексам.
Как создать новый словарь
Для начала можно создать пустой словарь.
# Создать пустой словарь mydict
mydict = {}
Теперь давайте создадим словарь, содержащий какие-нибудь элементы. Это будут шесть пар ключ-значение, где марки iphone будут выступать в качестве ключей, а годы выпуска — в качестве значений.
released = {
"iphone": 2007,
"iphone 3G": 2008,
"iphone 3GS": 2009,
"iphone 4": 2010,
"iphone 4S": 2011,
"iphone 5": 2012
}
print(released)
# Результат:
# {'iphone': 2007, 'iphone 3G': 2008, 'iphone 3GS': 2009, 'iphone 4': 2010, 'iphone 4S': 2011, 'iphone 5': 2012}
Как добавить значение в словарь
Вы можете добавить значение в уже существующий словарь. Синтаксис добавления элемента в словарь: mydict[key] = "value". Если в качестве ключа указать ключ уже существующего элемента, его значение изменится.
Давайте добавим новый iphone в наш словарь released:
released["iphone 5S"] = 2013
print(released)
# Результат:
# {'iphone': 2007, 'iphone 3G': 2008, 'iphone 3GS': 2009, 'iphone 4': 2010, 'iphone 4S': 2011, 'iphone 5': 2012, 'iphone 5S': 2013}
Примечание редакции. Об этом и других способах добавления элементов в словарь читайте в статье «Как добавить элемент в словарь в Python».
Как удалить из словаря ключ и его значение
Вы можете удалить любой элемент целиком с помощью оператора del:
del released["iphone"]
print(released)
# Результат:
# {'iphone 3G': 2008, 'iphone 3GS': 2009, 'iphone 4': 2010, 'iphone 4S': 2011, 'iphone 5': 2012, 'iphone 5S': 2013}
Как узнать длину словаря в Python
Функция len() возвращает количество пар ключ-значение в словаре. Другими словами, количество элементов словаря.
print(released)
# Результат:
# {'iphone 3G': 2008, 'iphone 3GS': 2009, 'iphone 4': 2010, 'iphone 4S': 2011, 'iphone 5': 2012, 'iphone 5S': 2013}
print(len(released))
# Результат:
# 6
Как проверить, есть ли в словаре определенный ключ
Проверить, есть ли искомый ключ в словаре, можно при помощи оператора in:
>>> my_dict = {'a': 'one', 'b': 'two'}
>>> 'a' in my_dict
True
>>> 'b' in my_dict
True
>>> 'c' in my_dict
False
Также это можно сделать при помощи цикла for:
for item in released:
if "iphone 5" in released:
print("Key found")
break
else:
print("No keys found")
# Результат:
# Key found
Вывод значений словаря
Как получить значение по ключу
Значение ключа можно получить при помощи квадратных скобок. Например:
print(released["iphone 5"]) # Результат: # 2012
Но этот способ не безопасный. Если вы укажете ключ, которого нет в словаре, получите ошибку KeyError:
print(released["iphone 7"]) # Результат: # KeyError: 'iphone 7'
Безопасный способ получить значение по ключу — применение метода get(). Этот метод принимает два параметра: ключ, значение которого мы хотим получить, и значение, которое вернется, если такого ключа в словаре нет.
print(released.get("iphone 3G", "none"))
# Результат:
# 2008
print(released.get("iphone 7", "none"))
# Результат:
# none
Вывод всех значений словаря с помощью цикла for
print("Values:")
for year in released:
releases = released[year]
print(releases)
Результат:
Values: 2008 2009 2010 2011 2012 2013
Вывод ключей словаря
Получить только ключи словаря можно с помощью метода keys():
phones = released.keys() print(phones) # Результат: # dict_keys(['iphone 3G', 'iphone 3GS', 'iphone 4', 'iphone 4S', 'iphone 5', 'iphone 5S'])
Или можно воспользоваться методом join():
print("This dictionary contains these keys: ", " ".join(released))
# Результат:
# This dictionary contains these keys: iphone 3G iphone 3GS iphone 4 iphone 4S iphone 5 iphone 5S
Как вывести все ключи словаря с помощью цикла for
print("-" * 10)
print("iphone releases so far: ")
print("-" * 10)
for release in released:
print(release)
Результат:
---------- iphone releases so far: ---------- iphone 3G iphone 3GS iphone 4 iphone 4S iphone 5 iphone 5S
Вывод всех ключей и значений словаря
Вы можете вывести ключи словаря вместе с их значениями с помощью метода items():
for key, val in released.items():
print(key, "=>", val)
Результат:
iphone 3G => 2008 iphone 3GS => 2009 iphone 4 => 2010 iphone 4S => 2011 iphone 5 => 2012 iphone 5S => 2013
Вывод всех элементов словаря с помощью pprint
Для этого сперва нужно импортировать модуль pprint.
import pprint pprint.pprint(released)
Результат:
{'iphone 3G': 2008,
'iphone 3GS': 2009,
'iphone 4': 2010,
'iphone 4S': 2011,
'iphone 5': 2012,
'iphone 5S': 2013}
Сортировка словаря
Помимо печати, давайте отсортируем данные, чтобы получить ожидаемый результат.
for key, value in sorted(released.items()):
print(key, value)
Результат:
iphone 3G 2008 iphone 3GS 2009 iphone 4 2010 iphone 4S 2011 iphone 5 2012 iphone 5S 2013
И еще пример:
for phones in sorted(released, key=len):
print(phones, released[phones])
Результат:
iphone 4 2010 iphone 5 2012 iphone 3G 2008 iphone 4S 2011 iphone 5S 2013 iphone 3GS 2009
Подсчет
Наконец, давайте рассмотрим использование счетчика в словаре для отображения количества элементов.
count = {}
for element in released:
count[element] = count.get(element, 0) + 1
print count
# Результат:
{'iphone 3G': 1, 'iphone 3GS': 1, 'iphone 4': 1, 'iphone 4S': 1, 'iphone 5': 1, 'iphone 5S': 1}
Перевод статьи PFB Staff Writer «Python Dictionary – How To Create Dictionaries In Python»

Пингбэк: Работа с JSON в Python
Пингбэк: Работа с файлами в Python
Пингбэк: Как обрабатывать исключения KeyError в Python