- Словари в Python
- 1.1. Создание словаря на Python.
- 1.2. Обращение к значению, связанному с ключом в словаре Python .
- 1.3. Добавление новых пар «ключ-значение»
- 1.4. Удаление пар «ключ-значение»
- 1.5. Обращение к значениям методом get() .
- 1.6. Проверка наличия заданного ключа в словаре Python.
- 2.1. Перебор пар «ключ-значение» методом items() .
- 2.2. Перебор всех ключей в словаре методом keys() .
- 2.3. Перебор всех значений в словаре Python метод values() .
- 3. Список словарей в Python.
- 4. Список в словаре Python.
- 5. Словарь в словаре Python
- Словари (dict) и работа с ними. Методы словарей
- Методы словарей
Словари в Python
Раннее были рассмотрены три встроенные коллекции, относящиеся к категории последовательностей — это строки, списки и кортежи. Теперь рассмотрим коллекции, не являющиеся последовательностью. Словарь (dictionary) представляет собой неупорядоченную коллекцию для хранения пар «ключ — значение«. Каждому ключу соответствует конкретное значение. Ключи словаря должны быть неизменяемыми, например строки, числа, кортежи, и уникальными, то есть дубликаты невозможны. Разным ключам могут соответствовать одинаковые значения.
Содержание страницы: |
---|
1.1. Создание словаря на Python |
1.2. Обращение к значению, связанному с ключом в словаре |
1.3. Добавление новых пар «ключ-значение» |
1.4. Удаление пар «ключ-значение» |
1.5. Обращение к значениям методом get() |
1.6. Проверка наличия заданного ключа в словаре |
2.1. Перебор пар «ключ-значение» методом items() |
2.2. Перебор всех ключей в словаре методом keys() |
2.3. Перебор всех значений в словаре метод values() |
3. Список словарей в Python |
4. Список в словаре Python |
5. Словарь в словаре Python |
1.1. Создание словаря на Python.
Для создания словаря заключите в фигурные скобки <> список пар «ключ-значение», разделенных запятыми, в форме ключ: значение. Значением может быть число, список, строка и даже другой словарь. В примере ниже хранится информация об одном автомобиле.
В данном примере ключом является ‘марка’, а значение ‘bmw’. Затем через запятую идет следующая пара ключ-значение и так далее. Если вы укажете ключ, то Python вернет значение, связанное с этим ключом. Ключ от значения всегда отделяется двоеточием.
1.2. Обращение к значению, связанному с ключом в словаре Python .
Для получения значения, связанного с ключом в словаре, укажите имя словаря, а затем ключ в квадратных скобках [ ] .
В данном примере возвращается значения связанных с ключом в словаре с помощью f-строк строится сообщение.
1.3. Добавление новых пар «ключ-значение»
В словарь в любой момент можно добавлять новые пары «ключ-значение». Для этого укажите имя словаря, затем в квадратных скобках новый ключ и с помощью команды присваивания укажите значение. Добавим в словарь автомобиля его цвет.
В итоге мы получили в словаре новую пару «ключ-значение» ‘цвет’: ‘белый’. Таким образом можно добавлять неограниченное количество пар.
1.4. Удаление пар «ключ-значение»
- Для удаления пар «ключ-значение» можно воспользоваться командой del . Для этого достаточно передать имя словаря и удаляемый ключ.
- Также пары можно удалять методом словарей pop , который возвращает значение удаляемого ключа.
>>> car_1. pop (‘mileage’)
58135
>>> print (car_1)
1.5. Обращение к значениям методом get() .
Когда вы используете синтаксис с ключом в квадратных скобках, если запрашиваемый ключ не существует, то вы получаете сообщение об ошибке. Воспользовавшись методом get() , вместо ошибки вы получите сообщение об отсутствие заданного ключа в словаре Python. В первом аргументе метода get() передайте ключ, а во втором необязательном аргументе, можно передать значение, которое должно вернуться при отсутствии ключа.
>>> car_1 =
>>> color = car_1. get (‘color’, ‘Такого ключа не существует’)
>>> print (color)
Такого ключа не существует
В результате вместо ошибки, мы получили сообщение о отсутствие ключа в словаре.
1.6. Проверка наличия заданного ключа в словаре Python.
Чтобы проверить содержит ли словарь заданный ключ, можно воспользоваться оператором in или not in :
>>> car_1 =
>>> ‘type’ in car_1
True
>>> ‘color’ in car_1
False
>>> ‘color’ not in car_1
True
2.1. Перебор пар «ключ-значение» методом items() .
Для перебора словаря можно воспользоваться циклом for за которым следует вызов метода items() , возвращающий список пар «ключ-значение». Такой вид перебора хорошо работает для словарей, хранящих один вид информации с разными ключами. В примере ниже создадим словарь связывающий месяц с количеством дней в нем. Воспользуемся f-строками и создадим условия if-else для удобного чтения окончания.
В начале в цикле for Python перебирает все пары «ключ-значение» в словаре. В процессе перебора ключ сохраняется в переменной month, а значение в переменной days. Затем создается условие, если количество дней четное, то выводится команда print с названием месяца и количества дней с окончанием «дней». Если количество не чётное, то пишется «день».
2.2. Перебор всех ключей в словаре методом keys() .
Метод keys() удобен если вы собираетесь работать с ключами в словаре. Переберем словарь и выведем все ключи в нем:
В Python перебор ключей используется по умолчанию при переборе словаря. Две записи ниже дают один и тот же результат.
Явный вызов метода keys() может упростить чтение вашего кода.
Начиная с Python 3.7 перебор содержимого словаря возвращает элементы в том порядке, в каком они вставлялись. Один из способов перебрать элементы в определенном порядке, вызвать функцию sorted() .
>>> for key in sorted( year.keys() ) :
. print (key)
.
апрель
март
февраль
январь
В результате ключи сортируются по алфавиту.
2.3. Перебор всех значений в словаре Python метод values() .
Для получения всех значений в словаре Python без ключей, используют метод values() .
В процессе перебора цикла for значения сохраняются в переменную v и затем выводятся. Значения извлекаются из словаря без проверки на повторения. Чтобы получить значения без повторений можно воспользоваться множеством set() .
3. Список словарей в Python.
В Python можно сохранить множество словарей в списки или список сделать значением элемента словаря. Создание таких сложных структур называется вложениями. Можно вложить не ограниченное количество словарей в список.
Далее создаем пустой список и добавляем в него словари.
Для удобства чтения кода можно вывести элементы списка с помощью цикла for .
В процессе работы может понадобиться изменить какой-либо элемент. Для этого также можно воспользоваться циклом for и командой if-else . К примеру, нам нужно изменить пробег и цвет автомобиля Bmw.
В результате Python перебирает список и проверяет условия, если в паре ключ: значение появляется автомобиль Bmw, то для него меняются элементы, для всех остальных ничего не изменяется.
4. Список в словаре Python.
В словарь Python можно также поместить список. Например, есть словарь с опросами посетителей на сайте, какая марка автомобиля им больше нравится. У одного человека может быть несколько ответов, как раз их можно поместить в список.
>>> favorite_cars = . ‘alex’: [ ‘bmw’, ‘audi’, ‘mersedes’ ] ,
. ‘artem’: [ ‘audi’ ] ,
. ‘phil’: [ ‘ford’, ‘porshe’ ] ,
. ‘jon’: [ ‘lada’ ]
. >
>>> for name, cars in favorite_cars.items():
. print (f»\n любит автомобили марки:»)
. for car in cars:
. print (f»\t»)
.
Alex любит автомобили марки:
Bmw
Audi
Mersedes
Artem любит автомобили марки:
Audi
Phil любит автомобили марки:
Ford
Porshe
Jon любит автомобили марки:
Lada
В процессе перебора словаря имя сохраняется в переменной name, а список в переменную cars. Выводим сообщение с помощью f-строки с именем опрашиваемого, затем с помощью цикла for перебираем элементы списка и выводим названия брендов с новой строки.
5. Словарь в словаре Python
Словарь тоже можно вложить в словарь. Например, словарь с пользователями на сайте. У каждого пользователя хранится информация о нем имя и фамилия.
>>> users =
. ‘qwerty’:
. ‘name’: ‘john’,
. ‘surname’: ‘brut’
. > ,
. ‘fill’:
. ‘name’: ‘philip’,
. ‘surname’: ‘ivanov’
. >
. >
>>> for login, user in users.items():
. print (f»\nВаш логин: «)
. fullname = f» »
. print (f»\tДобро пожаловать на сайт !»)
.
Ваш логин: qwerty
Добро пожаловать на сайт John Brut!
Ваш логин: fill
Добро пожаловать на сайт Philip Ivanov!
У нас определяется словарь users содержащий ключ- логин пользователя и значение — словарь с именем и фамилией. В процессе перебора словаря Python сохраняет ключ в переменной login, а словарь, связанный с ключом в переменной user. Выводим сообщение о логине пользователя на экран. Затем создаем переменную fullname с именем и фамилией извлеченную из словаря и выводим на экран.
Словари (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 в комментарий заключайте его в теги