17/07/2025

Коллекции данных, продолжение

Коллекции данных, продолжение

Словарь

Словарь(dict) - это контейнер для пары ключ - значение.

Значением может быть любой объект, а вот ключом нет.

Ключи - только строки:

a = dict(one=1, two=2, three=3)

При другом варианте, можно в ключах задавать и другие структуры данных:

a = {'one': 1, 'two': 2, 'three': 3}
b = {(1,2,3): 1, 'two': 2, 'three': 3}

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

с = dict([('one', 1), ('two', 2), ('three', 3)])
d = dict({'one': 1, 'two': 2, 'three': 3})
d = dict({'one': 1, 'two': 2}, three=3)

По словарю можно интерироваться:

a = dict(one=1, two=2, three=3)

for key, value in a.items():
  print(key, value) # one 1 two 2 three 3
  
for x in a.items():
  print(x) # ('one', 1) ('two', 2) ('three', 3)

Можно создавать словарь из других структур:

Создаем словарь соответсвия числа от 0 до 9 включительно и степени двойки с этим показателем.

f = {x : 2 ** x for x in range(10)}
print(f)
# {0: 1, 1: 2, 2: 4, 3: 8, 4: 16, 5: 32, 6: 64, 7:128, 8: 256, 9: 512}

Можно создавать словарь из другого словаря

f = {x : 2 ** x for x in range(10)}
g = {k: v for k, v in f.items() if k % 2 == 1}
print(g)
# {1: 2, 3: 8, 5: 32, 7:128, 9: 512}

можно перевернуть словарь

f = {x : 2 ** x for x in range(10)}
g = {v: k for k, v in f.items()} # значение и ключ поменялись местами
print(g)

длина словаря - функция len(число ключей в нём)

print(len(f), len(g))

можно проверять, что какой то ключ входит или не входит в словарь

print(1 in f, 10 in f, 2 not in f)

можно обращаться по индексам(ключам) словаря

print(f[3])

если какого то ключа нет в словаре то получим ошибку KeyError

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

print(f.get(10, -1))

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

f[3] = -1