Словарь в Python — это коллекция пар ключ-значение, где каждый ключ должен быть уникальным. С другой стороны, набор в Python — это неупорядоченная коллекция уникальных элементов. Когда мы говорим о словаре наборов Python, мы имеем в виду словарь Python, где каждый ключ сопоставлен с набором.
Примеры. Давайте создадим словарь наборов Python, который представляет некоторые из самых густонаселенных городов Калифорнии и Флориды.
USA = { 'California': {'Los Angeles', 'San Francisco', 'San Diego'}, 'Florida': {'Miami', 'Orlando', 'Tampa'} } print(type(USA)) print(USA)
Вывод: в приведенном выше коде Python у меня есть словарь с именем «США», в котором в качестве ключей используются «Калифорния» и «Флорида», а в качестве соответствующих значений заданы некоторые названия популярных городов, заданные Python. Я использовал функцию type() в Python, что подтверждает, что я создал словарь Python.
- Зачем использовать словарь?
- Как создать?
- Метод 1: с использованием {}
- Метод 2: с помощью dict()
- Метод 3: с использованием словарного понимания
- Метод 4: с помощью defaultdict()
- Метод 5: с использованием метода setdefault
- Метод 6: с использованием цикла for
- Заключение
Зачем использовать словарь?
- Уникальные значения. Одним из основных способов использования наборов в Python является сохранение уникальных значений. В контексте словаря Python это означает, что каждый ключ имеет набор уникальных значений.
- Быстрое тестирование членства: наборы предлагают среднюю сложность времени O(1) для проверки существования элемента.
- Гибкость: словарь наборов Python обеспечивает структурированный способ управления категориями уникальных элементов.
Как создать?
В Python существует множество различных методов для создания словаря множеств Python. Давайте рассмотрим их один за другим, используя несколько наглядных примеров.
Метод 1: с использованием {}
Это самый простой способ создать словарь. Заключив пары ключ-значение в фигурные скобки {}, вы можете определить и инициализировать словарь Python.
Сценарий: давайте рассмотрим ситуацию, когда нам нужно напрямую перечислить наиболее густонаселенные города в каждом штате, используя словарь наборов Python, чтобы в наших данных не хранилось повторяющихся городов.
most_populated_city = { 'California': {'Los Angeles'}, 'New York': {'New York City'}, 'Texas': {'Houston'} } print(most_populated_city) print(type(most_populated_city))
Вывод: в этом сценарии мы напрямую создали словарь Python с штатами в качестве ключей и наборами, содержащими самые густонаселенные города в качестве значений, используя {}.
{'California': {'Los Angeles'}, 'New York': {'New York City'}, 'Texas': {'Houston'}}
Таким образом, мы легко инициализируем словарь множеств Python с помощью фигурных скобок {}.
Метод 2: с помощью dict()
Конструктор dict() можно использовать для создания словаря Python. Чтобы создать словарь наборов, значением каждого ключа в конструкторе должен быть набор.
Давайте создадим словарь Python для демонстрации столиц выбранных штатов.
capitals = dict( California={'Sacramento'}, Texas={'Austin'}, Florida={'Tallahassee'} ) print(capitals) print(type(capitals))
Вывод: здесь мы используем функцию dict() для создания словаря Python, в котором каждый штат(ключ) связан с набором, содержащим его столицу.
{'California': {'Sacramento'}, 'Texas': {'Austin'}, 'Florida': {'Tallahassee'}}
Метод 3: с использованием словарного понимания
Python поддерживает компактный способ создания словарей с использованием понятий. Понимание словарей обеспечивает краткий способ создания словарей из итераций, таких как set в Python. Мы можем вложить понимание множеств в понимание словаря, чтобы создать словарь множеств Python.
Пример: рассмотрим ситуацию, когда мы, как разработчик Python, получили задание классифицировать города по начальной букве их названий.
cities = ['Austin', 'Albany', 'Anaheim', 'Boston', 'Buffalo', 'Baltimore'] cities_by_initial = {char: {city for city in cities if city.startswith(char)} for char in 'AB'} print(cities_by_initial) print(type(cities_by_initial))
Вывод: здесь мы перебираем список городов в Python и группируем их по начальным буквам, используя словарь и понимание множеств.
{'A': {'Austin', 'Anaheim', 'Albany'}, 'B': {'Boston', 'Baltimore', 'Buffalo'}}
Метод 4: с помощью defaultdict()
Модуль коллекций предоставляет defaultdict, который является подклассом встроенного класса dict в Python.
Это позволяет указать тип значения по умолчанию для словаря в Python, который в нашем случае будет набором, который будет использоваться, если ключ еще не существует в словаре.
Сценарий: Давайте создадим набор наборов Python, который каталогизирует популярные туристические достопримечательности по штатам США.
from collections import defaultdict attractions = [('California', 'Golden Gate Bridge'),('New York', 'Statue of Liberty'),('California', 'Hollywood Sign')] attractions_by_state = defaultdict(set) for state, attraction in attractions: attractions_by_state[state].add(attraction) print(attractions_by_state) print(type(attractions_by_state))
Вывод: при использовании defaultdict(set), если состояние не существует в качестве ключа, оно автоматически связывается с пустым набором в Python. Это делает процесс добавления достопримечательностей более простым.
defaultdict(, {'California': {'Hollywood Sign', 'Golden Gate Bridge'}, 'New York': {'Statue of Liberty'}})
Метод 5: с использованием метода setdefault
Метод словарей setdefault возвращает значение указанного ключа, если он существует. Если нет, он вставляет ключ с указанным значением.
Это полезно для создания словаря наборов Python, поскольку помогает гарантировать, что каждый ключ сопоставлен с набором.
Сценарий: рассмотрим ситуацию, когда мы, как разработчик Python, получили задание отслеживать крупные аэропорты в различных штатах.
airports = [('Texas', 'Dallas/Fort Worth International Airport'),('California', 'Los Angeles International Airport'),('Texas', 'George Bush Intercontinental Airport')] airports_by_state = {} for state, airport in airports: airports_by_state.setdefault(state, set()).add(airport) print(airports_by_state) print(type(airports_by_state))
Вывод: метод словарей в Python setdefault позволяет получить значение заданного ключа, если он существует. Если нет, он устанавливает значение по умолчанию для этого ключа. Итак, здесь для каждого штата мы используем setdefault, чтобы либо получить существующий набор аэропортов, либо создать новый пустой набор в Python, к которому затем добавляем аэропорт.
{'Texas': {'George Bush Intercontinental Airport', 'Dallas/Fort Worth International Airport'}, 'California': {'Los Angeles International Airport'}}
Метод 6: с использованием цикла for
Простой цикл for может перебирать данные и заполнять словарь наборов. Это более ручной подход по сравнению с другими.
В этом подходе для каждой пары(ключ, значение) в списке данных в Python мы сначала проверяем, существует ли ключ в словаре Python. Если это не так, мы инициализируем его пустым набором в Python. Затем мы добавляем значение в набор, соответствующий ключу.
Пример: давайте сопоставим некоторые штаты с их известными университетами с помощью некоторых методов Python.
universities = [('Massachusetts', 'Harvard'),('California', 'Stanford'),('Massachusetts', 'MIT')] universities_by_state = {} for state, university in universities: if state not in universities_by_state: universities_by_state[state] = set() universities_by_state[state].add(university) print(universities_by_state) print(type(universities_by_state))
Вывод: в этом примере мы вручную проверяем, существует ли состояние в словаре. Если нет, мы создаем запись с пустым набором, а затем добавляем в набор университет.
{'Massachusetts': {'Harvard', 'MIT'}, 'California': {'Stanford'}}
Заключение
Понимание того, что такое словарь множеств Python, почему он полезен и как создать один словарь множеств Python, используя различные методы, такие как фигурные скобки {}, функция dict(), словарь с пониманием множеств, defaultdict(), setdefault и цикл for. с условными утверждениями.
Кроме того, мы также видели несколько наглядных примеров, связанных со всеми упомянутыми выше методами, о том, как можно использовать эти методы для создания словаря множеств в Python.