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

Содержание

Используя метод defaultdict()

defaultdict — это подкласс встроенного класса dict. Он переопределяет один метод и добавляет одну записываемую переменную экземпляра. Преимущества defaultdict: словарь в defaultdict очень быстро инициализируется.

Во время инициализации defaultdict мы можем указать значение по умолчанию во время создания нового ключа. В случае multi-dict это обычно список.

Например, предположим, что у вас есть класс, полный студентов, и вам нужно поддерживать словарь, в котором ключом является имя учащегося, а значениями — предметы, по которым он учится. Одна из возможных реализаций заключается в следующем:

# Importing the defaultdict class from the collections module
from collections import defaultdict

# Creating a defaultdict where each value is an empty list by default
student_subject = defaultdict(list)

# Appending 'Math' to the list of subjects for the student 'James'
student_subject['James'].append('Math')

# Appending 'Science' to the list of subjects for the student 'James'
student_subject['James'].append('Science')

# Appending 'English' to the list of subjects for the student 'Bobby'
student_subject['Bobby'].append('English')

# Appending 'History' to the list of subjects for the student 'Bobby'
student_subject['Bobby'].append('History')

print(student_subject)

Используя метод defaultdict()

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

Используя метод setdefault()

Метод setdefault() возвращает значение ключа, если ключ находится в словаре. Если нет, он вставляет его с ключом, установленным на указанное значение. Допустим, вы хотите сохранить несколько значений для одного ключа.

Вот как вы это сделаете:

Допустим, вы собираетесь провести конференцию, и каждый выступающий на конференции может провести несколько сессий. Вы можете настроить словарь, в котором ключом будет имя говорящего, а значениями — сеансы, которые он дает, например:

# Initialize an empty dictionary to store the conference schedule
conference_schedule = {}

# Add a session for 'Dr. Vincent' to the schedule
# If 'Dr. Vincent' is not already a key in the dictionary, setdefault() creates a new key with an empty list as the value
# Then, append() adds 'Session 1' to the list associated with 'Dr. Vincent'
conference_schedule.setdefault('Dr. Vincent', []).append('Session 1')

# Add a session for 'Dr. Vincent' to the schedule
conference_schedule.setdefault('Dr. Vincent', []).append('Session 2')

# Add a session for 'Dr. Eugene' to the schedule
conference_schedule.setdefault('Dr. Eugene', []).append('Session 3')

# Print the conference schedule dictionary
print(conference_schedule)

Используя метод setdefault()

Используя словарь списков

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

Например, вы можете инициализировать словарь, где ключ — это магазин, а значения — это то, что вам нужно купить:

# Initialize a dictionary 'shopping_list' with two keys('Walmart' and 'Target') and empty lists as values
shopping_list = {'Walmart': [], 'Target': []}

# Add 'Apples' to the list associated with the 'Walmart' key
shopping_list['Walmart'].append('Apples')

# Add 'Bananas' to the list associated with the 'Walmart' key
shopping_list['Walmart'].append('Bananas')

# Add 'Bread' to the list associated with the 'Target' key
shopping_list['Target'].append('Bread')

# Print the 'shopping_list' dictionary
print(shopping_list)

Используя словарь списков

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

Заключение

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

Добавить комментарий