Словари в Python представляют собой неупорядоченные коллекции пар
"ключ-значение", где ключи уникальны. Они очень полезны для хранения и
манипулирования данными, которые должны быть связаны друг с другом. Давайте
рассмотрим создание, использование и основные операции со словарями.
Создание словарей
Пустой словарь
empty_dict = {}
empty_dict = dict()
Словарь с элементами
person = {
"name": "Alice",
"age": 30,
"city": "New York"
}
Создание словаря с использованием функции dict()
person = dict(name="Alice", age=30, city="New York")
Доступ к элементам
словаря
Чтение значения по ключу
print(person["name"])
Изменение значения по ключу
person["age"] = 31
print(person["age"])
Добавление нового элемента
person["email"] = "alice@example.com"
print(person)
Удаление элемента
Метод pop()
Удаляет элемент по ключу и возвращает его значение.
age = person.pop("age")
print(age)
print(person)
Метод popitem()
Удаляет и возвращает последнюю добавленную пару "ключ-значение".
last_item = person.popitem()
print(last_item)
print(person)
Оператор del
Удаляет элемент по ключу.
del person["city"]
print(person)
Метод clear()
Удаляет все элементы из словаря.
person.clear()
print(person)
Основные методы работы со
словарями
Метод get()
Возвращает значение по ключу, если ключ существует, иначе возвращает значение
по умолчанию (None или заданное).
name = person.get("name")
print(name)
middle_name = person.get("middle_name", "N/A")
print(middle_name)
Метод keys()
Возвращает представление всех ключей в словаре.
keys = person.keys()
print(keys)
Метод values()
Возвращает представление всех значений в словаре.
values = person.values()
print(values)
Метод items()
Возвращает представление всех пар "ключ-значение" в словаре.
items = person.items()
print(items)
Метод update()
Обновляет словарь, добавляя пары "ключ-значение" из другого словаря или из
переданных именованных аргументов.
person.update({"email": "alice@example.com", "age": 31})
print(person)
Перебор элементов
словаря
Перебор ключей
for key in person:
print(key)
Перебор значений
for value in person.values():
print(value)
Перебор пар "ключ-значение"
for key, value in person.items():
print(f"{key}: {value}")
Вложенные словари
Словари могут содержать другие словари в качестве значений, что полезно для
представления сложных данных.
people = {
"Alice": {"age": 30, "city": "New York"},
"Bob": {"age": 25, "city": "Los Angeles"},
"Charlie": {"age": 35, "city": "Chicago"}
}
print(people["Alice"]["city"])
Примеры использования
словарей
Подсчет частоты элементов
text = "hello world"
frequency = {}
for char in text:
if char in frequency:
frequency[char] += 1
else:
frequency[char] = 1
print(frequency)
Группировка элементов по ключам
data = [
{"name": "Alice", "age": 30, "city": "New York"},
{"name": "Bob", "age": 25, "city": "Los Angeles"},
{"name": "Charlie", "age": 35, "city": "Chicago"},
{"name": "Dave", "age": 30, "city": "New York"}
]
grouped_by_city = {}
for item in data:
city = item["city"]
if city not in grouped_by_city:
grouped_by_city[city] = []
grouped_by_city[city].append(item)
print(grouped_by_city)
Объединение словарей
dict1 = {"a": 1, "b": 2}
dict2 = {"b": 3, "c": 4}
combined = dict1.copy()
combined.update(dict2)
print(combined)
combined = {**dict1, **dict2}
print(combined)
Генераторы словарей
Генераторы словарей позволяют создавать словари с помощью краткой записи.
squares = {x: x ** 2 for x in range(6)}
print(squares)
Полезные приемы со
словарями
Инвертирование словаря
Инвертирование ключей и значений в словаре.
original = {"a": 1, "b": 2, "c": 3}
inverted = {v: k for k, v in original.items()}
print(inverted)
Проверка наличия ключа
Проверка, существует ли ключ в словаре, используя оператор in
.
if "name" in person:
print("Name is in the dictionary")
Объединение словарей с обновлением значений
Использование метода update()
для объединения словарей с
приоритетом значений из второго словаря.
dict1 = {"a": 1, "b": 2}
dict2 = {"b": 3, "c": 4}
dict1.update(dict2)
print(dict1)
Создание словаря из двух списков
Использование функции zip()
для создания словаря из двух списков.
keys = ["name", "age", "city"]
values = ["Alice", 30, "New York"]
person = dict(zip(keys, values))
print(person)