8. Словари.

Онлайн-тренажер Python 3 для начинающих

Теория без воды. Задачи с автоматической проверкой. Подсказки на русском языке. Работает в любом современном браузере.

начать бесплатно

Самоучитель Python 3, собранный из материалов данного сайта. Предназначен в основном для тех, кто хочет изучить язык программирования Python с нуля.

Словари в 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"])  # Alice
 
Изменение значения по ключу
person["age"] = 31
print(person["age"])  # 31
 
Добавление нового элемента
person["email"] = "alice@example.com"
print(person)
# {'name': 'Alice', 'age': 31, 'city': 'New York', 'email': 'alice@example.com'}
 
Удаление элемента
 
 
Метод pop()
Удаляет элемент по ключу и возвращает его значение.
age = person.pop("age")
print(age)  # 31
print(person)
# {'name': 'Alice', 'city': 'New York', 'email': 'alice@example.com'}
 
Метод popitem()
Удаляет и возвращает последнюю добавленную пару "ключ-значение".
last_item = person.popitem()
print(last_item)  # ('email', 'alice@example.com')
print(person)
# {'name': 'Alice', 'city': 'New York'}
 
Оператор del
Удаляет элемент по ключу.
del person["city"]
print(person)
# {'name': 'Alice'}
 
Метод clear()
Удаляет все элементы из словаря.
person.clear()
print(person)  # {}
 
Основные методы работы со словарями
 
Метод get()
Возвращает значение по ключу, если ключ существует, иначе возвращает значение по умолчанию (None или заданное).
name = person.get("name")
print(name)  # Alice

middle_name = person.get("middle_name", "N/A")
print(middle_name)  # N/A
 
Метод keys()
Возвращает представление всех ключей в словаре.
keys = person.keys()
print(keys)  # dict_keys(['name', 'age', 'city'])
 
Метод values()
Возвращает представление всех значений в словаре.
values = person.values()
print(values)  # dict_values(['Alice', 30, 'New York'])
 
Метод items()
Возвращает представление всех пар "ключ-значение" в словаре.
items = person.items()
print(items)  # dict_items([('name', 'Alice'), ('age', 30), ('city', 'New York')])
 
Метод update()
Обновляет словарь, добавляя пары "ключ-значение" из другого словаря или из переданных именованных аргументов.
person.update({"email": "alice@example.com", "age": 31})
print(person)
# {'name': 'Alice', 'age': 31, 'city': 'New York', 'email': 'alice@example.com'}
 
Перебор элементов словаря
 
Перебор ключей
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"])  # New York
 
Примеры использования словарей
 
Подсчет частоты элементов
text = "hello world"
frequency = {}

for char in text:
    if char in frequency:
        frequency[char] += 1
    else:
        frequency[char] = 1

print(frequency)
# {'h': 1, 'e': 1, 'l': 3, 'o': 2, ' ': 1, 'w': 1, 'r': 1, 'd': 1}

 

Группировка элементов по ключам
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)
# {
#     'New York': [{'name': 'Alice', 'age': 30, 'city': 'New York'}, {'name': 'Dave', 'age': 30, 'city': 'New York'}],
#     'Los Angeles': [{'name': 'Bob', 'age': 25, 'city': 'Los Angeles'}],
#     'Chicago': [{'name': 'Charlie', 'age': 35, 'city': 'Chicago'}]
# }
 
Объединение словарей
dict1 = {"a": 1, "b": 2}
dict2 = {"b": 3, "c": 4}

# Метод update()
combined = dict1.copy()
combined.update(dict2)
print(combined)  # {'a': 1, 'b': 3, 'c': 4}

# Оператор **
combined = {**dict1, **dict2}
print(combined)  # {'a': 1, 'b': 3, 'c': 4}
 
Генераторы словарей
Генераторы словарей позволяют создавать словари с помощью краткой записи.
squares = {x: x ** 2 for x in range(6)}
print(squares)  # {0: 0, 1: 1, 2: 4, 3: 9, 4: 16, 5: 25}
 
Полезные приемы со словарями
 
Инвертирование словаря
Инвертирование ключей и значений в словаре.
original = {"a": 1, "b": 2, "c": 3}
inverted = {v: k for k, v in original.items()}
print(inverted)  # {1: 'a', 2: 'b', 3: 'c'}
 
Проверка наличия ключа
Проверка, существует ли ключ в словаре, используя оператор 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)  # {'a': 1, 'b': 3, 'c': 4}
 
Создание словаря из двух списков
Использование функции zip() для создания словаря из двух списков.
keys = ["name", "age", "city"]
values = ["Alice", 30, "New York"]

person = dict(zip(keys, values))
print(person)  # {'name': 'Alice', 'age': 30, 'city': 'New York'}

категории

ТЕОРИЯ

  • Введение в Python
  • Основы программирования на Python
  • Управляющие конструкции
  • Структуры данных
  • Функции и модули
  • Обработка исключений
  • Работа с файлами и потоками
  • файловая система
  • Объектно-ориентированное программирование (ООП)
  • Регулярные выражения
  • Дополнительные темы

Мы в соцсетях