Словари (dict) и работа с ними. Методы словарей
Сегодня я расскажу о таком типе данных, как словари, о работе со словарями, операциях над ними, методах, о генераторах словарей.
Словари в Python — неупорядоченные коллекции произвольных объектов с доступом по ключу. Их иногда ещё называют ассоциативными массивами или хеш-таблицами.
Чтобы работать со словарём, его нужно создать. Сделать это можно несколькими способами. Во-первых, с помощью литерала:
Во-вторых, с помощью функции dict:
В-третьих, с помощью метода fromkeys:
В-четвертых, с помощью генераторов словарей, которые очень похожи на генераторы списков.
Теперь попробуем добавить записей в словарь и извлечь значения ключей:
: Как видно из примера, присвоение по новому ключу расширяет словарь, присвоение по существующему ключу перезаписывает его, а попытка извлечения несуществующего ключа порождает исключение. Для избежания исключения есть специальный метод (см. ниже), или можно перехватывать исключение.
Что же можно еще делать со словарями? Да то же самое, что и с другими объектами: встроенные функции, ключевые слова (например, циклы for и while), а также специальные методы словарей.
Методы словарей
dict.clear() — очищает словарь.
dict.copy() — возвращает копию словаря.
classmethod dict.fromkeys(seq[, value]) — создает словарь с ключами из seq и значением value (по умолчанию None).
dict.get(key[, default]) — возвращает значение ключа, но если его нет, не бросает исключение, а возвращает default (по умолчанию None).
dict.items() — возвращает пары (ключ, значение).
dict.keys() — возвращает ключи в словаре.
dict.pop(key[, default]) — удаляет ключ и возвращает значение. Если ключа нет, возвращает default (по умолчанию бросает исключение).
dict.popitem() — удаляет и возвращает пару (ключ, значение). Если словарь пуст, бросает исключение KeyError. Помните, что словари неупорядочены.
dict.setdefault(key[, default]) — возвращает значение ключа, но если его нет, не бросает исключение, а создает ключ со значением default (по умолчанию None).
dict.update([other]) — обновляет словарь, добавляя пары (ключ, значение) из other. Существующие ключи перезаписываются. Возвращает None (не новый словарь!).
dict.values() — возвращает значения в словаре.
Для вставки кода на Python в комментарий заключайте его в теги
Словари в Python и методы работы с ними
В одной из прошлых статей я разбирал списки в Python и методы работы с ними. Сегодня мы узнаем, как работать со словарями в Python и изучим их методы.
Что такое словарь
Словари (dict) хранят в себе ключи и их объекты, где ключ – это имя объекта в словаре. Их могут называть ассоциативными массивами или хеш-таблицами.
Как мы знаем, в списках доступ к элементам осуществляется по индексу, который является неотрицательным числом. Индекс в списках создается автоматически при добавлении новых элементов, а индексами в словарях служат ключи, и их мы должны объявлять сами.
Для каких целей нам будут полезны словари?
- Подсчет каких-то предметов, где ключи – названия предметов, а объект – их количество.
- Для экономии памяти, если есть массив, который использует не все индексы по порядку.
- Установка соответствий между объектами, сортировка.
- Хранение данных разных объектов (например: ключ – ID пользователя ВКонтакте, а объект – массив с данными).
Ключом может быть произвольный неизменяемый тип данных: различные числа, строки, кортежи. Ключом в словаре не может быть множество, но может быть неизменяемый элемент типа frozenset. Значением элемента словаря может быть любой изменяемый или неизменяемый тип данных.
Создание словаря в Python
Пустой словарь в Python, как и в JavaScript, можно создать двумя способами: через функцию dict() или с помощью фигурных скобок. Рассмотрим на примере:
#Создание через функцию: dict1 = dict() #Создание через фигурные скобки: dict2 = <> print(type(dict1)) #Выведет print(type(dict2)) #Выведет print(dict1) #Выведет <> print(dict2) #Выведет <>
Теперь создадим уже заполненный словарь через функцию и фигурные скобки:
#Создание через функцию: dict1 = dict(car='машина', apple='яблоко') #Создание через фигурные скобки: dict2 = < 'car': 'машина', 'apple': 'яблоко' >print(dict1) #Выведет print(dict2) #Выведет
Изменение словаря
Добавим в наш словарь объект. Для этого нам нужно придумать значение ключу. Рассмотрим на примере:
dict = < 'car': ‘машина’, 'apple': 'яблоко' >dict['orange'] = 'апельсин' #В квадратных скобках указываем имя ключа, а значение после знака равно print(dict) #Выведет
Для удаления ключа и его объекта в словаре используют метод del, указывая имя ключа в квадратных скобках:
dict = < 'car': 'машина', 'apple': 'яблоко', 'orange': 'апельсин' >del dict['orange'] print(dict) #Выведет
Перебор элементов словарей в Python
Для вывода всех ключей и значений по порядку используем цикл с оператором in:
dict = < 'car': 'машина', 'apple': 'яблоко', 'orange': 'апельсин' >for key in dict: print(key, dictPython функции работы со словарями) #Выведет: #car машина #apple яблоко #orange апельсин
Для вывода значения по ключу используем имя словаря и квадратные скобки с именем нужного ключа:
dict = < 'car': 'машина', 'apple': 'яблоко', 'orange': 'апельсин' >print(dict['car']) #Выведет 'машина'
Методы словарей в Python
copy() – создание копии словаря. Рассмотрим на примере:
dict1 = < 'car': 'машина', 'apple': 'яблоко', 'orange': 'апельсин' >dict2 = dict1.copy() print(dict2) #Выведет
get() – получение значения по ключу. Рассмотрим на примере:
dict = < 'car': 'машина', 'apple': 'яблоко', 'orange': 'апельсин' >print(dict.get('car')) #Выведет 'машина'
clear() – очистка словаря. Рассмотрим на примере:
dict = < 'car': 'машина', 'apple': 'яблоко', 'orange': 'апельсин' >dict.clear() print(dict) #Выведет <>
keys() – получение всех ключей словаря. Рассмотрим на примере:
dict = < 'car': 'машина', 'apple': 'яблоко', 'orange': 'апельсин' >print(dict.keys()) #Выведет dict_keys(['car', 'apple', 'orange'])
values() – получение всех значений элементов словаря. Пример:
dict = < 'car': 'машина', 'apple': 'яблоко', 'orange': 'апельсин' >print(dict.values()) #Выведет dict_values(['машина', 'яблоко', 'апельсин'])
items() – получение всех элементов словаря, включая ключи. Рассмотрим на примере:
dict = < 'car': 'машина', 'apple': 'яблоко', 'orange': 'апельсин' >print(dict.items()) #Выведет dict_items([('car', 'машина'), ('apple', 'яблоко'), ('orange', 'апельсин')])
pop() – удаляет и возвращает значение ключа. Рассмотрим на примере:
dict = < 'car': 'машина', 'apple': 'яблоко', 'orange': 'апельсин' >print(dict.pop('car')) #Выведет ‘машина’ print(dict) #Выведет
popitem() – удаляет и возвращает имя и значение ключа. Пример:
dict = < 'car': 'машина', 'apple': 'яблоко', 'orange': 'апельсин' >print(dict.pop()) #Выведет ('orange', 'апельсин') print(dict) #Выведет
setdefault() – получение значения по ключу, если такой ключ присутствует в словаре. Когда такого ключа нет, он создается со значением None (если оно не указано в свойствах). Рассмотрим на примере:
dict = < 'car': 'машина', 'apple': 'яблоко', 'orange': 'апельсин' >print(dict.setdefault(‘car’) #Выведет 'машина' print(dict.setdefault('home', 'дом') #Выведет 'дом' print(dict) #Выведет
update(<>) – обновить значения по ключам, добавление новых ключей:
dict = < 'car': 'машина', 'apple': 'яблоко', 'orange': 'апельсин' >dict.update() print(dict) #Выведет
Итог
Мы изучили словари в Python и методы работы с ними. Надеюсь, статья была полезной для вас. Удачи!
Словари и их методы в Python
Словарь — неупорядоченная структура данных, которая позволяет хранить пары «ключ — значение». Вот пример словаря на Python:
Данный словарь использует строки в качестве ключей, однако ключом может являться в принципе любой неизменяемый тип данных. Значением же конкретного ключа может быть что угодно. Вот ещё один пример словаря, где ключами являются числа, а значениями — строки:
Важное уточнение: если вы попробуете использовать изменяемый тип данных в качестве ключа, то получите ошибку:
Прим. перев. На самом деле проблема не с изменяемыми, а с нехэшируемыми типами данных, но обычно это одно и то же.
Получение данных из словаря
Для получения значения конкретного ключа используются квадратные скобки [] . Предположим, что в нашем словаре есть пара 'марафон': 26 .
# берём значение с ключом "марафон" dictionary['марафон']
Опять же, вы получите ошибку, если попытаетесь получить значение по несуществующему ключу. Для избежания подобных ошибок существуют методы, о которых мы сейчас поговорим.
Добавление и обновление ключей
Добавление новых пар в словарь происходит достаточно просто:
# Добавляем ключ "туфля" со значением "род обуви, закрывающей ногу не выше щиколотки" dictionary['туфля'] = 'род обуви, закрывающей ногу не выше щиколотки'
Обновление существующих значений происходит абсолютно также:
# Обновляем ключ "туфля" и присваиваем ему значение "хорошая туфля" dictionary['туфля'] = 'хорошая туфля'
Удаление ключей
Для удаления ключа и соответствующего значения из словаря можно использовать del
# Удаляем значение с ключом "противостоять" из словаря del dictionary['противостоять']
Методы
Словари в Python имеют множество различных полезных методов, которые помогут вам в работе с ними. Вот лишь некоторые из них:
Update
Метод update() пригодится, если нужно обновить несколько пар сразу. Метод принимает другой словарь в качестве аргумента.
# Добавляем две пары в словарь dictionary, используя метод update dictionary.update()
Если вас интересует, почему данные в словаре расположены не в том порядке, в котором они были внесены в него, то это потому что словари не упорядочены.
Get
# Допустим, у нас есть словарь story_count story_count =
Метод get() возвращает значение по указанному ключу. Если указанного ключа не существует, метод вернёт None .
# Ключ "двенадцать" существует и метод get в данном случае вернёт 12 story_count.get('двенадцать')
Метод можно использовать для проверки наличия ключей в словаре:
Также можно указать значение по умолчанию, которое будет возвращено вместо None , если ключа в словаре не окажется:
# Метод вернёт 0 в случае, если данного ключа не существует story_count.get('два', 0)
Pop
Метод pop() удаляет ключ и возвращает соответствующее ему значение.
>>> story_count.pop('девяносто') 90 >>> story_count
Keys
Метод keys() возвращает коллекцию ключей в словаре.
>>> story_count.keys() ['сто', 'пять', 'двенадцать']
Values
Метод values() возвращает коллекцию значений в словаре.
>>> story_count.values() [100, 12, 5]
Items
Метод items() возвращает пары «ключ — значение».
>>> dictionary.items() [('персона', 'человек'), ('бежать', 'двигаться со скоростью'), ('туфля', 'род обуви, закрывающей ногу не выше щиколотки'), ('бежал', 'бежать в прошедшем времени'), ('марафон', 'гонка бегунов длиной около 26 миль'), ('туфли', 'туфля во множественном числе')]
Итерация через словарь
Вы можете провести итерацию по каждому ключу в словаре.
for key in story_count: print(key)
Очевидно, вместо story_count можно использовать story_count.keys() .
В примере кода ниже цикл for использует метод items() для получения пары «ключ — значение» на каждую итерацию.
>>> for key, value in dictionary.items(): print(key, value) ('персона', 'человек') ('бежать', 'двигаться со скоростью') ('туфля', 'род обуви, закрывающей ногу не выше щиколотки') ('бежал', 'бежать в прошедшем времени') ('марафон', 'гонка бегунов длиной около 26 миль') ('туфли', 'туфля во множественном числе')
О словаре и других типах данных Python можно почитать в нашей статье.
Что думаете?
По сути ничего нового , да и чтоб найти хорошую работу не нужно никакого cv , нужно просто быть специалистом и главное иметь желание работать , всё просто Ватсон, да можно найти хорошую работу и без опыта , легко, главное нужно иметь большое желание и немного быть не рукожоп#м ))). Иногда напишут такие требования что сам IT Бог не разберется , а по сути нужен стандартный сисадмин , с универской базой, а понапишут такую ахинею , что никая Википедия таких терминов и знать не знает , кто пишет такие требования idiotusî.))), Хороший айтишник тот который не работает, за него компы пашут и не ломаются, собаки ))). Учись студент
Слава, скиньте, пожалуйста, Ваше резюме, мы с радостью познакомимся с Вами. На данный момент у нас штат полностью укомплектован, но кто знает? талантливым специалистам мы всегда рады.
Сколько раз еще нужно будет повторить простой чек-лист, чтобы исчезли треш-резюме - риторический вопрос.Впрочем так же как и треш-собеседования 🙂