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

generate_usernames.py: Представьте, что мы выполняем настройку новой компьютерной системы и нам необходимо сгенерировать имена пользователей для всех служащих нашей компании. У нас имеется простой текстовый файл (в кодировке UTF-8), где каждая строка представляет собой запись из полей, разделенных двоеточиями. Каждая запись соответствует одному сотруднику компании и содержит следующие поля: уникальный идентификатор служащего, имя, отчество (это поле может быть пустым), фамилию и название отдела.

Программа должна читать данные из файла, который указан в командной строке, извлекать отдельные поля из каждой строки (записи) и возвращать подходящие имена пользователей. Каждое имя пользователя должно быть уникальным и должно создаваться на основе имени сотрудника. В языке Python общепринято использовать только символы верхнего регистра для идентификаторов, которые будут играть роль констант. Позднее, когда мы будем рассматривать оставшуюся часть программы, мы увидим, как используется именованный кортеж User и константы.

Если пользователь не ввел в командной строке имя какого-нибудь файла или ввел параметр "-h" или "--help", то программа просто выводит текст сообщения с инструкцией о порядке использования и завершает работу. Из каждой прочитанной строки удаляются любые завершающие пробельные символы (такие как п), и обработка строки продолжается, только если она не пустая. Это означает, что если в данных содержатся пустые строки, они будут просто проигнорированы. Все сгенерированные имена пользователей сохраняются в множестве usernames, чтобы гарантировать отсутствие повторяющихся имен пользователей. Сами данные сохраняются в словаре users.

Информация о каждом пользователе сохраняется в виде элемента словаря, ключом которого является кортеж, содержащий фамилию сотрудника, его имя и идентификатор, а значением - именованный кортеж типа User. Использование кортежа, содержащего фамилию сотрудника, его имя и идентификатор, в качестве ключа обеспечивает возможность вызывать функцию sorted для словаря и получать итерируемый объект, в котором элементы будут упорядочены в требуемом нам порядке (то есть фамилия, имя, идентификатор), избежав необходимости создавать функцию, которую пришлось бы передавать в качестве аргумента key.
Навигация: 1 2 3 4
 
 
© Copyright