Генераторы словарей и модули Рython
Функции в языке Python Функции в языке PythonВсе функции в языке Python возвращают какое-либо значение, хотя вполне возможно (и часто так и делается) просто игнорировать это значение. Возвращаемое значение может быть единственным значением или кортежем значений,...
Реализация генераторов Реализация генераторовМы рассмотрели коллекции-последовательности, tuple, collections, na-medtuple и list, поддерживающие, как и строки, возможность извлечения срезов. Также было рассмотрено использование оператора распаковывания...
Парсинг документов XML Парсинг документов XMLXML: Для парсинга документов XML широко используются два основных подхода. Один из них основан на анализе DOM (Document Object Model -объектная модель документа), а другой - на использовании SAX (Simple API for XML - упрощенный...
Копирование коллекций Копирование коллекцийКопирование коллекций: Поскольку в языке Python повсюду используются ссылки на объекты, когда выполняется оператор присваивания (=), никакого копирования данных на самом деле не происходит. Если справа от оператора находится литерал,...
Словари со значениями по умолчанию
Словари со значениями по умолчанию: Словари со значениями по умолчанию - это обычные словари, они поддерживают те же самые методы и операторы, что и обычные словари. Единственное, что отличает такие словари от обычных словарей, - это способ обработки отсутствующих ключей, но во всех остальных отношениях они ничем не отличаются друг от друга.

При обращении к несуществующему ("отсутствующему") ключу словаря возбуждается исключение KeyError. Это очень удобно, так как нередко для нас бывает желательно знать об отсутствии ключа, который, согласно нашим предположениям, может присутствовать.

Но в некоторых случаях бывает необходимо, чтобы в словаре присутствовали все ключи, которые мы используем, даже если это означает, что элемент с заданным ключом добавляется в словарь в момент первого обращения к нему. Например, допустим, что имеется словарь d, который не имеет элемента с ключом т, тогда выражение х = d[m] возбудит исключение KeyError. Если d - это словарь со значениями по умолчанию, созданный соответствующим способом, а элемент с ключом m принадлежит такому словарю, то при обращении к нему будет возвращено соответствующее значение, как и в случае с обычным словарем.

Но если в словаре со значениями по умолчанию отсутствует ключ т, то будет создан новый элемент словаря с ключом m и со значением по умолчанию, и будет возвращено значение этого, вновь созданного элемента. Ранее мы написали небольшую программу, которая подсчитывала количество вхождений каждого отдельного слова в файлы, имена которых передавались в виде аргументов командной строки. Каждый ключ в словаре words является словом, а значение - целым числом, в котором хранится количество вхождений данного слова во всех файлах.

Мы вынуждены были использовать метод diet. get , чтобы учесть случай, когда слово встречается впервые (когда необходимо создать новый элемент со значением счетчика, равным 1), а также случаи, когда слово встречается повторно (когда необходимо прибавить 1 к значению счетчика для уже существующего слова). При создании словаря со значениями по умолчанию мы можем определять фабричную функцию. Фабричная функция - это функция, которая вызывается, чтобы получить объект определенного типа.

Все встроенные типы данных языка Python могут использоваться как фабричные функции, например, тип данных str может вызываться как функция st г , которая при вызове без аргументов возвращает пустой строковый объект. Фабричная функция, передаваемая словарю со значениями по умолчанию, используется для создания значений по умолчанию для отсутствующих ключей. Обратите внимание, что имя функции - это ссылка на объект функции, поэтому, когда функция передается в качестве аргумента, передается одно только имя функции.
Навигация: 1 2 3 4
 
 
© Copyright