Рубрики

Namedtuple в Python

Python поддерживает тип контейнеров, таких как словари с именем « namedtuples () », присутствующих в модуле « коллекция ». Как и словари, они содержат ключи, которые хэшируются с определенным значением. Но, напротив, он поддерживает как доступ по значению ключа, так и итерацию, что не хватает словарям.

Операции над namedtuple ():

Операции доступа

1. Доступ по индексу: значения атрибутов namedtuple () упорядочены и могут быть доступны с использованием номера индекса в отличие от словарей, которые не доступны по индексу.

2. Доступ по ключевому слову. Доступ по ключевому имени также разрешен, как в словарях.

3. используя getattr (): — это еще один способ получить доступ к значению, указав namedtuple и значение ключа в качестве аргумента.

# Python-код для демонстрации namedtuple () и
# Доступ по имени, индексу и getattr ()

  
# импорт "коллекций" для namedtuple ()

import collections

  
# Объявление namedtuple ()

Student = collections.namedtuple('Student',['name','age','DOB'])

  
# Добавление значений

S = Student('Nandini','19','2541997')

  
# Доступ по индексу

print ("The Student age using index is : ",end ="")

print (S[1])

  
# Доступ по имени

print ("The Student name using keyname is : ",end ="")

print (S.name)

  
# Доступ с помощью getattr ()

print ("The Student DOB using getattr() is : ",end ="")

print (getattr(S,'DOB'))

Выход :

The Student age using index is : 19
The Student name using keyname is : Nandini
The Student DOB using getattr() is : 2541997

Конверсионные операции

1. _make (): — Эта функция используется для возврата namedtuple () из повторяемого аргумента, переданного в качестве аргумента.

2. _asdict (): — Эта функция возвращает OrdereDict (), созданный из сопоставленных значений namedtuple ().

3. используя оператор «**» (двойная звезда) : — Эта функция используется для преобразования словаря в namedtuple ().

# Python-код для демонстрации namedtuple () и
# _make (), _asdict () и оператор "**"

  
# импорт "коллекций" для namedtuple ()

import collections

  
# Объявление namedtuple ()

Student = collections.namedtuple('Student',['name','age','DOB'])

  
# Добавление значений

S = Student('Nandini','19','2541997')

  
# инициализация повторяемая

li = ['Manjeet', '19', '411997' ]

  
# инициализация dict

di = { 'name' : "Nikhil", 'age' : 19 , 'DOB' : '1391997' }

  
# используя _make () для возврата namedtuple ()

print ("The namedtuple instance using iterable is  : ")

print (Student._make(li))

  
# используя _asdict () для возврата OrderedDict ()

print ("The OrderedDict instance using namedtuple is  : ")

print (S._asdict())

  
# используя оператор ** для возврата namedtuple из словаря

print ("The namedtuple instance from dict is  : ")

print (Student(**di))

Выход :

The namedtuple instance using iterable is  : 
Student(name='Manjeet', age='19', DOB='411997')
The OrderedDict instance using namedtuple is  : 
OrderedDict([('name', 'Nandini'), ('age', '19'), ('DOB', '2541997')])
The namedtuple instance from dict is  : 
Student(name='Nikhil', age=19, DOB='1391997')

Дополнительные операции

1. _fields: — Эта функция используется для возврата всех имен ключей объявленного пространства имен.

2. _replace (): — Эта функция используется для изменения значений, сопоставленных с переданным именем ключа.

# Python-код для демонстрации namedtuple () и
# _fields и _replace ()

  
# импорт "коллекций" для namedtuple ()

import collections

  
# Объявление namedtuple ()

Student = collections.namedtuple('Student',['name','age','DOB'])

  
# Добавление значений

S = Student('Nandini','19','2541997')

  
# используя _fields для отображения всех имен ключей namedtuple ()

print ("All the fields of students are : ")

print (S._fields)

  
# использование _replace () для изменения значений атрибута namedtuple

print ("The modified namedtuple is : ")

print(S._replace(name = 'Manjeet'))

Выход :

All the fields of students are : 
('name', 'age', 'DOB')
The modified namedtuple is : 
Student(name='Manjeet', age='19', DOB='2541997')

Эта статья предоставлена Манджитом Сингхом . Если вы как GeeksforGeeks и хотели бы внести свой вклад, вы также можете написать статью с помощью contribute.geeksforgeeks.org или по почте статьи contribute@geeksforgeeks.org. Смотрите свою статью, появляющуюся на главной странице GeeksforGeeks, и помогите другим вундеркиндам.

Пожалуйста, пишите комментарии, если вы обнаружите что-то неправильное или вы хотите поделиться дополнительной информацией по обсуждаемой выше теме.

Рекомендуемые посты:

Namedtuple в Python

0.00 (0%) 0 votes