Словари в Python и работа с ними

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

3 комментария к “Словари в Python и работа с ними”

  1. Пингбэк: Работа с JSON в Python

  2. Пингбэк: Работа с файлами в Python

  3. Пингбэк: Как обрабатывать исключения KeyError в Python

Оставьте комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *