Словари в 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