Словари (dictionary) в Python — работа с элементами

В этом уроке вы узнаете о словаре (dictionary) в Python, который позволяет вам систематизировать связанную информацию, и основах работы с элементами.

Содержание

Что такое словарь в Python?

Словарь (dictionary) в Python — это набор пар ключ-значение, где каждый ключ связан со значением. Значением в паре ключ-значение может быть число, строка, список, кортеж или даже другой словарь. Фактически, вы можете использовать значение любого допустимого типа в Python в качестве значения в паре ключ-значение.

Ключ в паре ключ-значение должен быть неизменяемым. Другими словами, ключ нельзя изменить, например, число, строку, кортеж и т. д.

Python использует фигурные скобки {} для определения словаря. Внутри фигурных скобок вы можете разместить ноль, одну или несколько пар ключ-значение.

В следующем примере определяется пустой словарь:

empty_dict = {}

Обычно перед циклом for или while вы определяете пустой словарь. Внутри цикла вы добавляете в словарь пары ключ-значение.

Чтобы найти тип словаря, вы используете функцию type() следующим образом:

empty_dict = {}

print(type(empty_dict))

Выход:

<class 'dict'>

В следующем примере определяется словарь с некоторыми парами ключ-значение:

person = {
    'first_name': 'John',
    'last_name': 'Doe',
    'age': 25,
    'favorite_colors': ['blue', 'green'],
    'active': True
}

Персональный словарь имеет пять пар «ключ-значение», которые представляют имя, фамилию, возраст, любимые цвета и активный статус.

Доступ к значениям в словаре

Чтобы получить доступ к значению по ключу из словаря, вы можете использовать обозначение квадратных скобок или метод get().

1) Использование квадратных скобок

Чтобы получить доступ к значению, связанному с ключом, вы помещаете ключ в квадратные скобки:

dict[key]

Ниже показано, как получить значения, связанные с ключами first_name и Last_name в словаре person:

person = {
    'first_name': 'John',
    'last_name': 'Doe',
    'age': 25,
    'favorite_colors': ['blue', 'green'],
    'active': True
}
print(person['first_name'])
print(person['last_name'])

Выход:

John
Doe

2) Использование метода get()

Если вы попытаетесь получить доступ к несуществующему ключу, вы получите сообщение об ошибке. Например:

person = {
    'first_name': 'John',
    'last_name': 'Doe',
    'age': 25,
    'favorite_colors': ['blue', 'green'],
    'active': True
}

ssn = person['ssn']

Ошибка:

Traceback(most recent call last):
  File "dictionary.py", line 15, in <module>
    ssn = person['ssn']
KeyError: 'ssn'

Чтобы избежать этой ошибки, вы можете использовать метод словаря get():

person = {
    'first_name': 'John',
    'last_name': 'Doe',
    'age': 25,
    'favorite_colors': ['blue', 'green'],
    'active': True
}

ssn = person.get('ssn')
print(ssn)

Выход:

None

Если ключ не существует, метод get() возвращает None вместо выдачи KeyError. Обратите внимание, что None означает, что значение не существует.

Метод get() также возвращает значение по умолчанию, если ключ не существует, передавая значение по умолчанию в его второй аргумент.

Следующий пример возвращает строку «000-00-0000», если ключ ssn не существует в словаре person:

person = {
    'first_name': 'John',
    'last_name': 'Doe',
    'age': 25,
    'favorite_colors': ['blue', 'green'],
    'active': True
}

ssn = person.get('ssn', '000-00-0000')
print(ssn)

Выход:

000-00-0000

Добавление новых пар ключ-значение

Поскольку словарь имеет динамическую структуру, в него можно в любой момент добавить новые пары ключ-значение. Чтобы добавить новую пару ключ-значение в словарь, вы указываете имя словаря, за которым следует новый ключ в квадратных скобках вместе с новым значением.

В следующем примере в словарь person добавляется новая пара ключ-значение:

person['gender'] = 'Famale'

Изменение значений в паре

Чтобы изменить значение, связанное с ключом, вы указываете имя словаря с ключом в квадратных скобках и новое значение, связанное с ключом:

dict[key] = new_value

В следующем примере изменяется значение, связанное с возрастом в словаре person:

person = {
    'first_name': 'John',
    'last_name': 'Doe',
    'age': 25,
    'favorite_colors': ['blue', 'green'],
    'active': True
}

person['age'] = 26

print(person)

Выход:

{'first_name': 'John', 'last_name': 'Doe', 'age': 26, 'favorite_colors': ['blue', 'green'], 'active': True}

Удаление пар ключ-значение

Чтобы удалить пару ключ-значение по ключу, вы используете оператор del:

del dict[key]

В этом синтаксисе вы указываете имя словаря и ключ, который хотите удалить.

В следующем примере из личного словаря удаляется ключ «active»:

person = {
    'first_name': 'John',
    'last_name': 'Doe',
    'age': 25,
    'favorite_colors': ['blue', 'green'],
    'active': True
}

del person['active']
print(person)

Выход:

{'first_name': 'John', 'last_name': 'Doe', 'age': 25, 'favorite_colors': ['blue', 'green']}

Перелистывание словаря

Чтобы просмотреть словарь, вы можете использовать цикл for для перебора его пар ключ-значение, ключей или значений.

Обратите внимание: начиная с Python 3.7, когда вы просматриваете словарь, вы получаете пары ключ-значение в том же порядке, в котором вы их вставляете.

1) Зацикливание всех пар ключ-значение в словаре

Словарь Python предоставляет метод items(), который возвращает объект, содержащий список пар ключ-значение в виде кортежей в списке.

Например:

person = {
    'first_name': 'John',
    'last_name': 'Doe',
    'age': 25,
    'favorite_colors': ['blue', 'green'],
    'active': True
}

print(person.items())

Выход:

dict_items([('first_name', 'John'),('last_name', 'Doe'),('age', 25),('favorite_colors', ['blue', 'green']),('active', True)])

Чтобы перебрать все пары ключ-значение в словаре, вы используете цикл for с двумя переменными ключ и значение для распаковки каждого кортежа списка:

person = {
    'first_name': 'John',
    'last_name': 'Doe',
    'age': 25,
    'favorite_colors': ['blue', 'green'],
    'active': True
}

for key, value in person.items():
    print(f"{key}: {value}")

Выход:

first_name: John
last_name: Doe
age: 25
favorite_colors: ['blue', 'green']
active: True

Обратите внимание, что в цикле for вы можете использовать любое имя переменной. Они не обязательно должны быть ключом и значением.

2) Перебор всех ключей в словаре

Иногда вам просто нужно просмотреть все ключи в словаре. В этом случае вы можете использовать цикл for с методом keys().

Метод keys() возвращает объект, содержащий список ключей в словаре.

Например:

person = {
    'first_name': 'John',
    'last_name': 'Doe',
    'age': 25,
    'favorite_colors': ['blue', 'green'],
    'active': True
}

for key in person.keys():
    print(key)

Выход:

first_name
last_name
age
favorite_colors
active

Фактически, цикл по всем ключам является поведением по умолчанию при циклическом просмотре словаря. Поэтому вам не нужно использовать метод keys().

Следующий код возвращает тот же результат, что и в приведенном выше примере:

person = {
    'first_name': 'John',
    'last_name': 'Doe',
    'age': 25,
    'favorite_colors': ['blue', 'green'],
    'active': True
}

for key in person:
    print(key)

3) Перебор всех значений в словаре

Метод values() возвращает список значений без каких-либо ключей.

Чтобы перебрать все значения в словаре, вы используете цикл for с методом values():

person = {
    'first_name': 'John',
    'last_name': 'Doe',
    'age': 25,
    'favorite_colors': ['blue', 'green'],
    'active': True
}

for value in person.values():
    print(value)

Выход:

John
Doe
25
['blue', 'green']
True

Заключение

  • Словарь Python — это коллекция пар ключ-значение, где каждому ключу соответствует связанное значение.
  • Используйте квадратные скобки или метод get() для доступа к значению по его ключу.
  • Оператор del —  чтобы удалить пару ключ-значение по ключу из словаря.
  • Цикл for — для перебора ключей, значений и пар ключ-значение в словаре.
Похожие посты
Добавить комментарий

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