Рубрики
Без рубрики

NamedTuple в Python

Перекресток размещен из блога Rakesh Чтобы понять namedtuple, вы сначала должны понять, что a regula … Помечено Python, NamedTuple, учебник, пример.

Крест опубликован Блог рекешка

Чтобы понять namedtuple, вы сначала должны понять, каковы обычный кортеж в Python.

Что такое кортеж

Кортеж в Python аналогичен списку. Разница между кортежом и списком состоит в том, что кортежи неизменяются, что означает, что вы не можете изменить элементы кортежа после его назначения.

Другое отличие состоит в том, что кортежи определяются с использованием скобок () Вместо квадратных скобок [] в списке.

Кортеры также проиндексируются с целыми числами, как список. Чтобы получить доступ к значению в кортеже, вы должны предоставить свой числовой индекс.

Что называется namedTuple.

Как предполагает имя, NamedTupes – это просто кортежи, но с именами, назначенными его элементами. NamedTupes может сделать все, что может сделать кортеж. Но преимущество на NameedTupes над кортежом заключается в том, что вы можете получить доступ к своим значениям, используя числовой индекс, а также имена, представляемые на его полях.

Когда количество элементов велико, становится трудно запомнить, какой индекс – это то, что. Таким образом, NamedTuple приходит удобно в этой ситуации со всеми функциями нормального кортежа и добавленной особенностью доступности с именами полей.

Эта проблема также может быть решена путем создания класса с помощью свойств только для чтения и доступа к значениям ClassName.fieldname. . Но класс кажется излишним для этой цели. С NamedTupes мы избегаем всех кодов для класса и все равно можем получить доступ к значениям, такими как Record.fieldname Отказ

Вы все еще можете использовать номер индекса для доступа к сохраненным значениям. Итак, NamedTuple похож на компромисс между кортежом и списком/словарем в Python.

Как создать namedtuple

NamedTuple присутствует в Коллекции Модуль Python.

>>> from collections import namedtuple
>>> Person = namedtuple("Person", "name age sex")
>>> person1 = Person("Rakesh", 24, "male")

Каждый NamedTuple представлен своим собственным классом, созданным с помощью namedtuple () Фабричный метод. Первый аргумент – это имя нового класса/namedTuple, а второй аргумент представляет собой строку, содержащую имена элементов, разделенные пробелами или запятыми.

После создания структуры и предоставления значений в NameDTuple, как показано в приведенном выше блоке кода, вы можете использовать точечную обозначение для доступа к значениям в нашем человеке NameDTuple.

>>> print(person1.name)
Rakesh
>>> print(person1.age)
24
>>> print(person1.sex)
male

Значения также могут быть доступны с использованием числового индекса, такими как регулярные кортежи и списки.

>>> person1[0]
'Rakesh'
>>> person1[1]
24
>>> person1[2]
'male'

Оба вышеуказанные кодовые блоки предоставляют один и тот же выход, но с различными методами доступа. Таким образом, вы можете использовать любые обозначения, которые вы найдете полезными.

Атрибуты NamedTuple

_ поля

Используйте это, чтобы получить названия поля всех элементов в NameDTuple.

>>> person1._fields
('name', 'age', 'sex')

_ заменять

Namedtuple неизменен, но мы можем использовать это _replace который возвращает неглубокую копию NamedTuple, с указанными значениями свойств изменены. Оригинальный NamedTuple остается неизменным.

>>> person1._replace(name="Gautam")
Person(name='Gautam', age=24, sex='male')

_ асмин

Это возвращает содержимое NamedTuple в качестве упорядоченного словаря.

>>> person1._asdict()
OrderedDict([('name', 'Rakesh'), ('age', 24), ('sex', 'male')])

Приведенный выше код возвращает Person1 NamedTuple в качестве упорядочения, в порядке их добавления.

_сделать

Это может быть использовано для создания экземпляра NamedTuple из последовательности или нерешимости. Он приходит удобно, когда вы должны создать NamedTuple из существующих данных.

>>> p2 = ["Eli", 21, "male"]
>>> person2 = Person._make(p2)
>>> person2
Person(name='Eli', age=21, sex='male')

Преимущества использования NamedTupes

  • Вы можете получить доступ к значениям, используя имена полей, а также индексов.
  • На NamedTupes так же эффективны памятью, как обычные кортежи, потому что у него нет словарей для каждого экземпляра. Это также почему это быстрее, чем словарь.
  • Улучшает читаемость вашего кода.

Итак, надеюсь, этот вид очищает, что такое NamedTuple и как его можно использовать для улучшения читаемости и записи чистого кода.

Оригинал: “https://dev.to/rkshrksh/namedtuple-in-python-43mi”