Python Словари: Удаление, копирование и модификация

Этот урок посвящен работе со словарями в Python. Рассмотрим методы и функции для удаления, копирования, извлечения и модификации элементов словаря.

Удаление элементов

Для удаления пары ключ-значение используется оператор del. Например:

sl = {'H': 17, 'a': 10, 'b': 20}
del sl['H']
print(sl)  # Выведет {'a': 10, 'b': 20}

Удаление несуществующего ключа вызовет ошибку. Перед удалением рекомендуется проверять наличие ключа с помощью оператора in:

if '74' in sl:
    del sl['74']

Методы словаря

pop()

pop() удаляет ключ и возвращает соответствующее значение. Если ключа нет, можно указать значение по умолчанию:

sl = {'H': 17, 'a': 10, 'b': 20}
l = sl.pop('H', 'Привет')
print(sl)  # Выведет {'a': 10, 'b': 20}
print(l)   # Выведет 17

l = sl.pop('x', 'Привет')
print(sl)  # Выведет {'a': 10, 'b': 20}
print(l)   # Выведет Привет

popitem()

popitem() удаляет и возвращает произвольную пару ключ-значение (часто последнюю добавленную).

sl = {'H': 17, 'a': 10, 'b': 20}
l = sl.popitem()
print(sl)  # Выведет {'H': 17, 'a': 10} (или другой порядок, т.к. словари неупорядочены)
print(l)   # Выведет кортеж (ключ, значение)

clear()

clear() очищает словарь, удаляя все пары ключ-значение.

sl.clear()
print(sl)  # Выведет {}

copy()

copy() создает копию словаря. Это создает новый объект, а не просто ссылку:

sl = {'H': 17, 'a': 10, 'b': 20}
sl_copy = sl.copy()
print(id(sl), id(sl_copy)) # Выведет два разных ID

get()

get() возвращает значение по ключу. Если ключа нет, возвращает значение по умолчанию (None, если не указано):

sl = {'H': 17, 'a': 10, 'b': 20}
print(sl.get('H'))      # Выведет 17
print(sl.get('x'))      # Выведет None
print(sl.get('x', 'z')) # Выведет z

setdefault()

setdefault() возвращает значение по ключу. Если ключа нет, создает его со значением по умолчанию и возвращает это значение:

sl = {'H': 17, 'a': 10, 'b': 20}
print(sl.setdefault('H'))      # Выведет 17
print(sl.setdefault('x', 'z')) # Выведет z
print(sl)                     # Выведет {'H': 17, 'a': 10, 'b': 20, 'x': 'z'}

update()

update() обновляет словарь, добавляя пары ключ-значение из другого словаря или итерируемого объекта:

sl = {'H': 17, 'a': 10}
sl1 = {'b': 20, 'c': 30}
sl.update(sl1)
print(sl)  # Выведет {'H': 17, 'a': 10, 'b': 20, 'c': 30}

Получение элементов

keys()

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

sl = {'H': 17, 'a': 10, 'b': 20}
keys_list = list(sl.keys())
print(keys_list) # Выведет список ключей
for key in sl.keys():
    print(key) # Выведет ключи по одному на строке

values()

values() возвращает итерируемый объект, содержащий все значения словаря.

values_list = list(sl.values())
print(values_list) #Выведет список значений

items()

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

items_list = list(sl.items())
print(items_list) # Выведет список кортежей (ключ, значение)
for key, value in sl.items():
    print(f"Ключ: {key}, Значение: {value}") # Выведет пары ключ-значение

Сортировка

Функция sorted() сортирует ключи словаря. Для сортировки пар ключ-значение используется метод items():

sl = {'b': 20, 'a': 10, 'H': 17}
sorted_keys = sorted(sl)
print(sorted_keys) # Выведет отсортированный список ключей

sorted_items = sorted(sl.items())
print(sorted_items) # Выведет отсортированный список кортежей (ключ, значение)
sorted_dict = dict(sorted_items)
print(sorted_dict) # Выведет отсортированный словарь

Вложенные словари

В Python можно создавать вложенные словари:

tel = {
    'Иванов Иван': {'тел': '123456789', 'город': 'Москва'},
    'Петров Петр': {'тел': '987654321', 'город': 'Пенза'}
}

print(tel['Петров Петр']['город']) # Выведет Пенза

Перебор вложенного словаря:

for name, data in tel.items():
    print(name)
    for key, value in data.items():
        print(f"t{key}: {value}")

В этом уроке рассмотрены основные методы работы со словарями в Python, включая добавление, удаление, извлечение и сортировку элементов, а также работу с вложенными словарями. Знание этих методов упрощает работу с данными, представленными в виде словарей.

Что будем искать? Например,программа