Контейнер Namedtuple в Python

Python предлагает множество встроенных структур данных, таких как списки, словари и кортежи, для эффективного хранения и управления данными. Namedtuple — это контейнер, подобный словарю, доступный в модуле «collections». Подобно словарям, namedtuple также содержит ключи, сопоставленные значениям. Однако namedtuple позволяет получить доступ к значениям через ключи, а также через индексы. По сравнению со словарями Python доступ к значениям через индексы является дополнительной функциональностью в namedtuple. В этой статье подробно описывается Python namedtuple с примерами.
Доступ к значениям из namedtuple
Доступ к значениям внутри namedtuple можно получить следующими способами:
- Используя ключи
- Используя индексы
- Используя функцию getattr()
Поскольку namedtuple преобразует поле в атрибуты, получить доступ к значениям можно с помощью функции getattr().
Примеры
Теперь давайте посмотрим на несколько примеров, чтобы понять создание и работу namedtuple. Чтобы создать и использовать namedtuple, сначала нам нужно импортировать модуль коллекций. В приведенном ниже примере создается именованный кортеж для учителя. Ключи именованного кортежа — это имя, возраст и отдел соответственно. Доступ к значениям осуществляется с помощью индексов и ключей.
# импорт модуля коллекций
import collections
# создание именованного кортежа для учителя #
имя, возраст и отдел - это ключи
Teacher = collections . namedtuple('Teacher',['name', 'age', 'department' ])
# создать нового учителя и добавить значения
Teacher_AndreyEx = Teacher("AndreyEx", 35, "Computer Science")
Теперь давайте обратимся к значениям с помощью функции getattr(). Именованный кортеж и ключ передаются в качестве аргумента функции getattr().
# импорт модуля коллекций
import collections
# создание именованного кортежа для учителя
# имя, возраст и отдел - это ключи
Teacher = collections . namedtuple('Teacher', ['name', 'age', ' department '])
# создать нового учителя и добавить значения
Teacher_AndreyEx = Teacher("AndreyEx", 35, "Computer Science") #
доступ к значениям учителя с помощью функция getattr()
print(getattr (teacher_AndreyEx, "name"))
print(getattr(teacher_AndreyEx, "age"))
print( getattr( teacher_AndreyEx, "department" ) )
Популярные операции namedtuple
Некоторые популярные функции преобразуют другие коллекции, такие как списки, словари и кортежи, в namedtuple и возвращают информацию об namedtuple. Ниже приведены функции, которые преобразуют другие коллекции в namedtuple:
- _сделать()
- _asdict()
- оператор **
Функция _make() преобразует итерируемый объект, такой как список и кортеж, в именованный набор. Функция _asdict() создает orderDict из именованного кортежа и возвращает его. Наконец, оператор ** преобразует словарь в именованный набор. Кроме того, функции, возвращающие информацию namedtuple, следующие:
- _fields
- _replace()
Функция _fields() возвращает все поля именованного кортежа, тогда как функция _replace() заменяет конкретное значение другим значением.
Давайте реализуем упомянутые выше функции в нашем скрипте Python для преобразования различных коллекций в namedtuple.
# импорт модуля коллекций
import collections
# создание именованного кортежа для учителя
# имя, возраст и отдел - это ключи
Teacher = collections.namedtuple('Teacher', ['name', 'age', 'department' ])
# создать нового учителя и добавить значения
Teacher_AndreyEx = Teacher("AndreyEx", 35, "Computer Science")
# создать список
Teacher_list =["Alex","Business Administration" ]
# создание словаря
teacher_dict = { 'name' : 'Maria', 'age' : 25, 'department' : 'Economics' }
# используя функцию _make() для преобразования списка в namedtuple
print("List to преобразование namedtuple: ")
print(Teacher._make(teacher_list))
# использование функции _asdict() для создания OrderDict
print(" Making the OrderedDict: ")
print(teacher_AndreyEx._asdict())
# использование ** для преобразования словаря в именованный кортеж
print("Преобразование словаря в именованный кортеж:")
print(Учитель(** teacher_dict))
Теперь давайте воспользуемся функциями _fields() и _replace(), чтобы получить информацию о ключах и заменить ключи соответственно.
# импорт модуля коллекций
import collections
# создание именованного кортежа для учителя #
имя, возраст и отдел - это ключи
Teacher = collections.namedtuple('Teacher',['name', 'age', 'department' ])
# создайте нового учителя и добавив значения
Teacher_AndreyEx = Teacher("AndreyEx", 35, "Computer Science")
# используя функцию _fields, чтобы получить ключи namedtuple
print("Ключи namedtuple:")
print(Teacher._fields)
# использование функции _replace для замены значения
print("Значение замены имени:")
print(teacher_AndreyEx._replace(name = 'Master'))
В выходных данных видно, что функция _fields возвращает ключи информации, а функция _replace() успешно заменяет имя.
Вывод
Namedtuple — это контейнер, подобный словарю, присутствующий в модуле «коллекции». Он содержит ключ и сопоставляет значения с ключом. В отличие от словаря Python, к значениям namedtuples также можно получить доступ с помощью индексов и функции getattr(). В этой статье на примерах кратко объясняется именованный кортеж.
Редактор: AndreyEx