Словарь dict – структура данных, в которой информация хранится в виде хеш-таблицы (ассоциативного массива). В таком массиве каждый ключ сопоставлен с определенным значением:
my_dict = {'цвет': 'красный', 'размер': 'XS', 'цена': 650}
Питоновский словарь аналогичен HashMap в Java и Object в JavaScript.
Как создать словарь в Python: 6 способов
Пустой словарь создается с помощью фигурных скобок или функции dict():
info_dict = {}
my_dict = dict()
Словари с данными, как и в случае со списками, можно создавать несколькими способами.
Способ 1: Перечисление ключей и значений
Данные словаря перечисляются в виде пар ключ: значение через запятую и заключаются в фигурные скобки:
car = {'модель': 'Audi A5 Sportback', 'цвет': 'красный', 'пробег': '100500 км'}
Способ 2: Создание словаря с помощью dict()
При использовании этого метода ключи и значения тоже придется определить вручную:
>>> my_dict = dict(name = 'Евгений', age = 28, position = 'Java-разработчик')
>>> print(my_dict)
{'name': 'Евгений', 'age': 28, 'position': 'Java-разработчик'}
Способ 3: Создание словаря с помощью zip() и dict()
Если есть два списка, в одном из которых хранятся ключи, а в другом – значения, словарь можно создать при помощи zip() и dict():
>>> keys = ['цвет', 'размер', 'количество', 'цена']
>>> values = ['синий', '35х45х60', 5, 2500]
>>> info = dict(zip(keys, values))
>>> print(info)
{'цвет': 'синий', 'размер': '35х45х60', 'количество': 5, 'цена': 2500}
Способ 4: Создание словаря из списка кортежей и кортежа списков
Если имеется список кортежей, в которых первый элемент служит ключом, а второй – значением, словарь можно сформировать с помощью dict():
>>> item = [('модель', 'Aura'), ('цвет', 'пурпурный'), ('наличие', 'на складе')]
>>> item_dict = dict(item)
>>> print(item_dict)
{'модель': 'Aura', 'цвет': 'пурпурный', 'наличие': 'на складе'}
Точно так же этот подход работает с кортежeм списков:
>>> employee= (['имя', 'Никита'], ['отчество', 'Сергеевич'], ['фамилия', 'Колобков'], ['возраст', 32])
>>> empl_dict = dict(employee)
>>> print(empl_dict)
{'имя': 'Никита', 'отчество': 'Сергеевич', 'фамилия': 'Колобков', 'возраст': 32}
Способ 5: Метод fromkeys()
Если нужно создать словарь, у всех ключей которого – одинаковые значения, можно воспользоваться методом fromkeys():
>>> new_dict = dict.fromkeys(['север', 'юг', 'восток', 'запад'], 0)
>>> print(new_dict)
{'север': 0, 'юг': 0, 'восток': 0, 'запад': 0}
Способ 6: Использование генератора словарей
Словари можно создавать на основе списков и строк. При этом одновременно можно проводить различные действия с числами и символами – математические операции, подсчет, сравнение и так далее:
>>> numbers = [2, 18, 5, 7, 2, 32, 6, 9, 4, 8, 9, 12, 14, 14]
>>> my_dict = {n: numbers.count(n) for n in numbers}
>>> print(my_dict)
{2: 2, 18: 1, 5: 1, 7: 1, 32: 1, 6: 1, 9: 2, 4: 1, 8: 1, 12: 1, 14: 2}
В генераторах можно использовать преобразование типов данных и условия:
>>> st = '12 31 4 53 6 7 4 90 8 7 56 3 42'
>>> my_dict = {n: int(n) * 2 for n in st.split() if int(n) % 2 == 0}
>>> print(my_dict)
{'12': 24, '4': 8, '6': 12, '90': 180, '8': 16, '56': 112, '42': 84}
Особенности словарей
Начиная с Python 3.6, словари являются упорядоченными коллекциями – пары ключ: значение хранятся в словаре в порядке добавления. В отличие от строк и списков, словари не поддерживают срезы и конкатенацию, а к элементу словаря нельзя обратиться по индексу – в качестве индексов в словарях выступают ключи:
>>> my_dict = {'фрукт': 'яблоко', 'цвет': 'красный', 'количество': '53 кг'}
>>> print(my_dict['цвет'], my_dict[' количество '])
красный 53 кг
Ключи в словаре не должны повторяться – если добавить в словарь ключ, идентичный существующему, Python сохранит только один ключ с последним значением:
>>> my_dict = {'цвет': 'красный', 'цвет': 'синий'}
>>> print(my_dict)
{'цвет': 'синий'}
В качестве ключей можно использовать все типы данных, которые относятся к неизменяемым: int, float, Boolean (True/False), frozenset, строки, кортежи. Нельзя использовать списки, обычные множества set и словари, поскольку они являются изменяемыми. При этом в качестве значения в словарях можно использовать данные любого типа, включая словари – такие словари называются вложенными:
>>> hr_info = {'сотрудник1': {'имя': 'Егор', 'должность': 'пентестер'},
'сотрудник2': {'имя': 'Михаил', 'должность': 'DevOps'},
'сотрудник3': {'имя': 'Татьяна', 'должность': 'фронтендер'}}
>>> print(hr_info['сотрудник2']['должность'])
DevOps
Отлично! Вы освоили все способы создания словарей и их ключевые особенности.
Вы умеете создавать словари шестью разными способами, включая генераторы, и понимаете их внутреннее устройство.
Но как извлекать данные, изменять их, удалять и безопасно работать с ключами, которых может не быть в словаре? Для этого в Python есть целый набор удобных методов. В полной версии урока вас ждёт:
- Полный арсенал методов для работы со словарями: от безопасного получения данных с помощью
.get()до перебора всех ключей, значений и пар с.keys(),.values()и.items(). - 10 практических задач для закрепления навыков, от создания телефонного справочника до подсчета символов и анализа данных.
Комментарии