Крест опубликован Блог рекешка
Чтобы понять 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”