Быстрый в изучении - мощный в программировании
>> Telegram ЧАТ для Python Программистов

Свободное общение и помощь советом и решением проблем с кодом! Заходите в наш TELEGRAM ЧАТ!

>> Python Форум Помощи!

Мы создали форум где отвечаем на все вопросы связанные с языком программирования Python. Ждем вас там!

>> Python Канал в Telegram

Обучающие статьи, видео и новости из мира Python. Подпишитесь на наш TELEGRAM КАНАЛ!

Python-рецепты. Словари

Python-рецепты. Словариg

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

Можно выделить несколько отличительных характеристик словарей:

  1. Для доступа к ним используется не индекс, а ключ. Аналогично спискам, в словарях есть возможность получения доступа к элементам цикла по ключам.
  2. Для хранения словарей используется неотсортированный порядок, кроме того, допускается сохранение ключей в порядке, отличном от порядка их добавления.
  3. Аналогично список, в словаре могут быть вложенные словари. Значениями словаря могут быть объекты любого типа (heterogeneous). Ключ словаря – immutable тип может являться float, целым числом, строкой или кортежем, включающим указанные типы.
  4. Словарь имеет вид хеш-таблицы быстрого доступа.
  5. Аналогично спискам, словари не хранят непосредственно объекты, а только ссылки на них.

Понятие словаря

Словарь (dictionary) представляет собой хеш или ассоциативный массив. Он является неупорядоченным множеством пар ключей: значение и требование уникальности ключей. Двое фигурных скобок {} формируют пустой словарь. Отличительная особенность от последовательностей в том, что для получения доступа к элементам из словаря осуществляется при помощи ключа, а не индекса, сам же ключ может иметь любой тип, изменения ключом не допускаются.

С словарем проводится две основные операции – сохранение с указанным ключом, а также извлечение значения по нему. Инструмент del дает возможность удаления пары key: value.

Метод keys () для словарей используется с целью возвращения списка всех применяемых ключей в произвольном порядке. Чтобы отсортировать список необходимо пользоваться методом sort (). Чтобы определить наличие конкретного ключа следует пользоваться методом has key(), однако в 3-й версии он уже устаревший и вместо него следует пользоваться оператором in. Чтобы добавить в словарь новый объект не нужно проводить предварительные проверки: если у ключа дор этого уже было определенное значение, то произойдет его перезапись.

Как пример возьмем работу с электронным досье Васи Пупкина.


# создадим пустой словарь
data = {}
# или так
data = dict()
# определим его длину - 0
len(data)
# заполним данными - имя и фамилия
data = {'firstname': 'Vasya', 'lastname': 'Pupkin'}
# длина словаря определяется количеством ключей
# на данный момент - 2
len(data)
# добавим отчество
data['middlename'] = 'Vasilyevich'
# после женитьбы Васи обновляем поле фамилии и добавляем банковский счет
data.update({'lastname':'Gates', 'bank_account': 10000000})
# добавляем новым элементом словарь с данными жены...
data['wife'] = {'firstname': 'Annet', 'lastname': 'Gates', 'middlename': 'Billovna'}
# ... и загоняем в гараж приданое
data['garage'] = ['Jaguar', 'Toyota Camry']
# и еще одну машинку
data['garage'].append('Honda Civic')
# узнаем имя жены - Annet
print data['wife']['firstname']
# Вася хвастается друзьям
print data['bank_account']
# если нет элемента с нужным ключом,
# можно избежать ошибки
if 'bank_account' in data:
    print data['bank_account']
else:
    print 'no money'
# или так
print data.get('bank_account', 0)
# закрываем счет
del data['bank_account']
# распечатываем досье
for key in data:
    print key, ':', data[key]
#### после распечатки выдаст следующее
# firstname : Vasya
# wife : {'middlename': 'Billovna', 'lastname': 'Gates', 'firstname': 'Annet'}
# middlename : Vasilyevich
# lastname : Gates
# garage : ['Jaguar', 'Toyota Camry', 'Honda Civic']
#### а само досье выглядит так
# {'firstname': 'Vasya', 'wife': {'middlename': 'Billovna', 'lastname': 'Gates',
# 'firstname': 'Annet'}, 'middlename': 'Vasilyevich', 'lastname': 'Gates',
# 'garage': ['Jaguar', 'Toyota Camry', 'Honda Civic']}

На этом, пожалуй, все.

Хотите приобрести современный телефон с хорошими характеристиками, по выгодной цене? Рекомендуем интернет-магазин Bestmobiles, здесь вы сможете купить оптом мобильные телефоны в Украине. В ассортименте огромный выбор устройств, радуют вкусные оптовые цены и удобные варианты доставки!