Python предлагает множество встроенных структур данных, таких как списки, словари и кортежи, для эффективного хранения и управления данными. Namedtuple - это контейнер, подобный словарю, доступный в модуле «коллекции». Подобно словарям, namedtuple также содержит ключи, которые сопоставлены со значениями. Однако namedtuple позволяет получить доступ к значениям через ключи, а также через индексы. По сравнению со словарями Python доступ к значениям через индексы является дополнительной функциональностью в namedtuple. В этой статье подробно объясняется Python namedtuple с примерами.
Доступ к значениям из namedtuple
Доступ к значениям внутри namedtuple можно получить следующими способами:
- Используя ключи
- Используя индексы
- Используя функцию getattr ()
Поскольку namedtuple преобразует поле в атрибуты, можно легко получить доступ к значениям с помощью функции getattr ().
Примеры
Теперь давайте посмотрим на несколько примеров, чтобы понять создание и работу namedtuple. Чтобы создать и использовать namedtuple, сначала нам нужно импортировать модуль коллекций. В приведенном ниже примере создается именованный кортеж для учителя. Ключи именованного кортежа - это имя, возраст и отдел, соответственно. Доступ к значениям осуществляется с помощью индексов и ключей.
# импорт модуля коллекцийимпортные коллекции
# создание именованной пары для учителя
# имя, возраст и отдел - это ключи
Учитель = коллекции.namedtuple ('Учитель', ['имя', 'возраст', 'отдел'])
# создать нового учителя и добавить значения
учитель_джон = Учитель («Джон», 29, «Информатика»)
# доступ к значениям учителя с помощью индексов
print ("Доступ к значениям с помощью индексов:")
print ("Имя учителя:", teacher_john [0])
print ("Возраст учителя:", teacher_john [1])
print ("Отделение учителей:", teacher_john [2])
# доступ к значениям учителя с помощью ключей
print ("Доступ к значениям с помощью ключей:")
print ("Имя учителя:", teacher_john.название)
print ("Возраст учителя:", teacher_john.возраст)
print ("Учительский отдел:", teacher_john.отделение)
Выход
Теперь давайте обратимся к значениям с помощью функции getattr (). Именованный кортеж и ключ передаются в качестве аргумента функции getattr ().
# импорт модуля коллекцийимпортные коллекции
# создание именованной пары для учителя
# имя, возраст и отдел - это ключи
Учитель = коллекции.namedtuple ('Учитель', ['имя', 'возраст', 'отдел'])
# создать нового учителя и добавить значения
учитель_джон = Учитель («Джон», 29, «Информатика»)
# доступ к значениям учителя с помощью функции getattr ()
print (getattr (учитель_джон, "имя"))
print (getattr (учитель_джон, "возраст"))
print (getattr (учитель_джон, "отдел"))
Выход
Популярные операции namedtuple
Некоторые популярные функции преобразуют другие коллекции, такие как списки, словари и кортежи, в namedtuple и возвращают информацию namedtuple. Ниже приведены функции, которые преобразуют другие коллекции в namedtuple:-
- _делать()
- _asdict ()
- ** оператор
Функция _make () преобразует итерируемый объект, например список и кортеж, в именованный кортеж. Функция _asdict () создает orderDict из именованного кортежа и возвращает его. Наконец, оператор ** преобразует словарь в именованный кортеж. Кроме того, функции, возвращающие информацию namedtuple, следующие:
- _fields
- _заменять()
Функция _fields () возвращает все поля именованного кортежа, тогда как функция _replace () заменяет конкретное значение другим значением.
Давайте реализуем упомянутые выше функции в нашем скрипте Python, чтобы преобразовать разные коллекции в namedtuple.
# импорт модуля коллекцийимпортные коллекции
# создание именованной пары для учителя
# имя, возраст и отдел - это ключи
Учитель = коллекции.namedtuple ('Учитель', ['имя', 'возраст', 'отдел'])
# создать нового учителя и добавить значения
учитель_джон = Учитель («Джон», 29, «Информатика»)
# создание списка
учитель_list = ["Марк", 30, "Деловое администрирование"]
# создание словаря
учитель_dict = 'name': 'Талор', 'возраст': 32, 'факультет': 'Экономика'
# использование функции _make () для преобразования списка в namedtuple
print ("Преобразование списка в именованный кортеж:")
печать (Учитель._make (список_педагогов))
# использование функции _asdict () для создания OrderDict
print ("Создание OrderedDict:")
печать (учитель_джон._asdict ())
# использование ** для преобразования словаря в именованный кортеж
print ("Преобразование словаря в namedtuple:")
печать (Учитель (** учитель_dict))
Выход
Теперь давайте воспользуемся функциями _fields () и _replace (), чтобы получить информацию о ключах и заменить ключи соответственно.
# импорт модуля коллекцийимпортные коллекции
# создание именованной пары для учителя
# имя, возраст и отдел - это ключи
Учитель = коллекции.namedtuple ('Учитель', ['имя', 'возраст', 'отдел'])
# создать нового учителя и добавить значения
учитель_джон = Учитель («Джон», 29, «Информатика»)
# использование функции _fields для получения ключей namedtuple
print ("Ключи namedtuple:")
печать (Учитель._fields)
# использование функции _replace для замены значения
print ("Заменяемое значение имени:")
печать (учитель_джон._replace (имя = 'Дональд'))
Выход
В выводе видно, что функция _fields возвращает ключи информации, а функция _replace () успешно заменяет имя.
Заключение
Namedtuple - это контейнер, подобный словарю, присутствующий в модуле «коллекции». Он содержит ключ и сопоставляет значения с ключом. В отличие от словаря Python, к значениям namedtuples также можно получить доступ с помощью индексов и функции getattr (). В этой статье кратко объясняется именованный кортеж на примерах.