Управление словарями в Python

PythonBeginner
Практиковаться сейчас

Введение

В этой лабораторной работе вы получите практический опыт работы со словарями Python (Python dictionaries) — важнейшей структурой данных для хранения информации в виде пар ключ-значение. Вы научитесь создавать словари и просматривать их содержимое, получать доступ к элементам и изменять их, добавлять и удалять элементы, а также работать с объектами представлений словарей (dictionary view objects). К концу этой лабораторной работы вы будете уверенно выполнять общие операции со словарями.

Создание и просмотр словарей

На этом шаге вы научитесь создавать словари и просматривать их содержимое. Словарь — это коллекция пар ключ-значение, где каждый ключ должен быть уникальным. Словари создаются с помощью фигурных скобок {} или конструктора dict(). Начиная с Python 3.7, словари сохраняют порядок вставки элементов.

Сначала откройте файл main.py в проводнике файлов (file explorer) слева в редакторе VS Code.

Добавьте следующий код в main.py. Этот скрипт демонстрирует различные способы создания словаря.

## Create an empty dictionary using curly braces
empty_dict = {}
print(f"Empty dictionary: {empty_dict}")
print(f"Type of empty_dict: {type(empty_dict)}")

## Create a dictionary with initial key-value pairs
student_info = {'name': 'Alice', 'age': 25, 'major': 'Computer Science'}
print(f"\nStudent info: {student_info}")

## Create a dictionary using the dict() constructor with keyword arguments
student_info_kw = dict(name='Bob', age=22, major='Physics')
print(f"Student info (from keywords): {student_info_kw}")

## Create a dictionary from a list of key-value tuples
student_info_tuples = dict([('name', 'Charlie'), ('age', 28), ('major', 'Chemistry')])
print(f"Student info (from tuples): {student_info_tuples}")

После добавления кода сохраните файл, нажав Ctrl + S.

Теперь запустите скрипт, открыв терминал в редакторе VS Code (Ctrl + ~) и выполнив следующую команду:

python main.py

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

Empty dictionary: {}
Type of empty_dict: <class 'dict'>

Student info: {'name': 'Alice', 'age': 25, 'major': 'Computer Science'}
Student info (from keywords): {'name': 'Bob', 'age': 22, 'major': 'Physics'}
Student info (from tuples): {'name': 'Charlie', 'age': 28, 'major': 'Chemistry'}

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

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

На этом шаге вы научитесь получать доступ к элементам словаря и изменять их. Вы можете извлечь значение, обратившись к его ключу внутри квадратных скобок [].

Сначала очистите предыдущее содержимое файла main.py. Затем добавьте в файл следующий код. Этот скрипт демонстрирует, как получать доступ к данным словаря и изменять их.

## Define a sample dictionary
student_info = {'name': 'Alice', 'age': 25, 'major': 'Computer Science'}
print(f"Original dictionary: {student_info}")

## Access elements using square brackets
student_name = student_info['name']
print(f"\nStudent Name: {student_name}")

## Using the get() method to access an element
student_age = student_info.get('age')
print(f"Student Age (using get()): {student_age}")

## The get() method can provide a default value if the key is not found
student_city = student_info.get('city', 'Not Specified')
print(f"Student City (with default): {student_city}")

## Modify the value of an existing key
print(f"\nOriginal age: {student_info['age']}")
student_info['age'] = 26
print(f"Modified age: {student_info['age']}")

print(f"\nUpdated dictionary: {student_info}")

Сохраните файл (Ctrl + S) и запустите скрипт из терминала:

python main.py

Вывод показывает, как извлекать значения и как выглядит словарь после изменения:

Original dictionary: {'name': 'Alice', 'age': 25, 'major': 'Computer Science'}

Student Name: Alice
Student Age (using get()): 25
Student City (with default): Not Specified

Original age: 25
Modified age: 26

Updated dictionary: {'name': 'Alice', 'age': 26, 'major': 'Computer Science'}

Обратите внимание, что использование квадратных скобок [] для доступа к несуществующему ключу вызовет ошибку KeyError, в то время как метод get() предоставляет более безопасный способ доступа к ключам, которые могут отсутствовать.

Добавление и удаление элементов словаря

На этом шаге рассматривается добавление новых элементов в словарь и удаление существующих. Вы можете добавить новую пару ключ-значение, присвоив значение новому ключу.

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

## Define a sample dictionary
student_info = {'name': 'Alice', 'age': 26, 'major': 'Computer Science'}
print(f"Initial dictionary: {student_info}")

## Add a new key-value pair
student_info['city'] = 'New York'
print(f"After adding 'city': {student_info}")

## Delete an element using pop()
## pop() removes the key and returns its value
removed_major = student_info.pop('major')
print(f"\nRemoved major: {removed_major}")
print(f"After pop('major'): {student_info}")

## Delete the last inserted element using popitem()
## popitem() removes and returns the (key, value) pair
removed_item = student_info.popitem()
print(f"\nRemoved item: {removed_item}")
print(f"After popitem(): {student_info}")

## Delete an element using the 'del' statement
del student_info['age']
print(f"\nAfter del student_info['age']: {student_info}")

## The clear() method removes all elements from the dictionary
student_info.clear()
print(f"After clear(): {student_info}")

Сохраните файл (Ctrl + S) и запустите скрипт:

python main.py

Вывод покажет словарь на каждом этапе модификации:

Initial dictionary: {'name': 'Alice', 'age': 26, 'major': 'Computer Science'}
After adding 'city': {'name': 'Alice', 'age': 26, 'major': 'Computer Science', 'city': 'New York'}

Removed major: Computer Science
After pop('major'): {'name': 'Alice', 'age': 26, 'city': 'New York'}

Removed item: ('city', 'New York')
After popitem(): {'name': 'Alice', 'age': 26}

After del student_info['age']: {'name': 'Alice'}
After clear(): {}

На этом шаге вы узнали, как добавлять новые элементы и как удалять их с помощью методов pop(), popitem(), оператора del и метода clear().

Изучение объектов представлений словаря (Dictionary View Objects)

На этом шаге вы изучите объекты представлений словаря (dictionary view objects). Это динамические объекты, которые предоставляют представление ключей, значений или пар (ключ, значение) словаря. Любые изменения в словаре немедленно отражаются в представлении.

Замените содержимое main.py следующим кодом:

## Define a sample dictionary
student_info = {'name': 'Alice', 'age': 26, 'major': 'Computer Science'}
print(f"Original dictionary: {student_info}\n")

## Get the view objects
keys_view = student_info.keys()
values_view = student_info.values()
items_view = student_info.items()

print(f"Keys View: {keys_view}")
print(f"Values View: {values_view}")
print(f"Items View: {items_view}")

## Views are dynamic and reflect dictionary changes
print("\n--- Modifying Dictionary ---")
student_info['city'] = 'New York'
print(f"Dictionary after adding 'city': {student_info}")
print(f"Keys View after modification: {keys_view}")
print(f"Values View after modification: {values_view}")

## You can iterate over view objects
print("\n--- Iterating over Keys View ---")
for key in keys_view:
    print(key)

## You can convert views to other data types like lists
keys_list = list(keys_view)
print(f"\nKeys view converted to a list: {keys_list}")

Сохраните файл (Ctrl + S) и запустите скрипт:

python main.py

Вывод демонстрирует создание, динамическую природу и итерацию по объектам представлений:

Original dictionary: {'name': 'Alice', 'age': 26, 'major': 'Computer Science'}

Keys View: dict_keys(['name', 'age', 'major'])
Values View: dict_values(['Alice', 26, 'Computer Science'])
Items View: dict_items([('name', 'Alice'), ('age', 26), ('major', 'Computer Science')])

--- Modifying Dictionary ---
Dictionary after adding 'city': {'name': 'Alice', 'age': 26, 'major': 'Computer Science', 'city': 'New York'}
Keys View after modification: dict_keys(['name', 'age', 'major', 'city'])
Values View after modification: dict_values(['Alice', 26, 'Computer Science', 'New York'])

--- Iterating over Keys View ---
name
age
major
city

Keys view converted to a list: ['name', 'age', 'major', 'city']

На этом шаге вы узнали, как использовать методы keys(), values() и items() для получения динамических представлений содержимого словаря, что полезно для многих задач программирования.

Резюме

В этой лабораторной работе вы получили практический опыт работы со словарями Python. Вы начали с создания словарей с использованием фигурных скобок {} и конструктора dict(). Затем вы научились получать доступ к элементам словаря и изменять их, используя нотацию квадратных скобок [] и метод get(). Далее вы практиковались в добавлении новых пар ключ-значение и их удалении с помощью различных методов, включая pop(), popitem(), оператор del и clear(). Наконец, вы изучили динамические представления словаря (keys(), values() и items()), поняв, как они отражают изменения в словаре и как по ним итерировать.