logo

Именована тупле у Питхон-у

Питхон подржава тип речника контејнера који се зове ' намедтупле() 'присутно у модулу' збирке '. У овом чланку ћемо видети како да креирате НамеТупле и операције на НамедТупле.

Шта је НамедТупле у Питхон-у?

У Питхон НамедТупле је присутан унутар модул колекције . Пружа начин за креирање једноставних лаких структура података сличних класи, али без додатних трошкова дефинисања пуне класе. Као и речници, они садрже кључеве који су хеширани на одређену вредност. Напротив, подржава и приступ из кључ/вредност и понављање функционалности које речници недостатак.



Синтакса Питхон НамедТупле

намедтупле(име_типа поља_намена)

  • типенаме - Име именоване групе.
  • фиелд_намес - Листа атрибута ускладиштених у намедтупле.

Пример: Имплементација кода НамедТупле је приказана у Питхон .

Python
# Python code to demonstrate namedtuple() from collections import namedtuple # Declaring namedtuple() Student = namedtuple('Student' ['name' 'age' 'DOB']) # Adding values S = Student('Nandini' '19' '2541997') # Access using index print('The Student age using index is : ' end='') print(S[1]) # Access using name print('The Student name using keyname is : ' end='') print(S.name) 

Излаз
The Student age using index is : 19 The Student name using keyname is : Nandini 

Операције на НамедТупле

Испод су следеће операције које се могу обавити коришћењем намедтупле():



  • Креирајте НамеТупле
  • Операције приступа
  • Операције конверзије
  • Додатне операције

Креирајте НамеТупле у Питхон-у

Ово креира нову класу намедтупле користећи функцију намедтупле() из збирке модул. Први аргумент је име нове класе, а други аргумент је листа имена поља.

Python
from collections import namedtuple Point = namedtuple('Point' ['x' 'y']) p = Point(x=1 y=2) print(p.x p.y) 

Излаз
1 2 

Операције приступа

Именоване групе у Питхон-у пружају погодне начине за приступ њиховим пољима. Испод су неке операције приступа које се пружају у Питхон-у за НамедТупле:

индекоф јава
  • Приступ преко индекса
  • Приступ по имену кључа
  • Приступ помоћу гетаттр()

Приступ по индексу

Вредности атрибута намедтупле() су поређане и може им се приступити коришћењем индексног броја за разлику од речника којима индекс није доступан. У овом примеру приступамо студентском користећи индекс.



Python
# importing 'collections' for namedtuple() import collections # Declaring namedtuple() Student = collections.namedtuple('Student' ['name' 'age' 'DOB']) # Adding values S = Student('Nandini' '19' '2541997') # Access using index print('The Student age using index is : ' end='') print(S[1]) 

Излаз
The Student age using index is : 19 

Приступ по имену кључа

Приступ по имену кључа је такође дозвољен као у речницима. У овом примеру користимо име кључа за приступ имену ученика.

Python
# importing 'collections' for namedtuple() import collections # Declaring namedtuple() Student = collections.namedtuple('Student' ['name' 'age' 'DOB']) # Adding values S = Student('Nandini' '19' '2541997') # Access using name print('The Student name using keyname is : ' end='') print(S.name) 

Излаз
The Student name using keyname is : Nandini 

Приступ помоћу гетаттр()

Ово је још један начин да се приступи вредности давањем намедтупле и вредности кључа као аргумента. У овом примеру користимо гетаттр() за приступ учениковом ИД-у у датој намедтупле.

Python
# importing 'collections' for namedtuple() import collections # Declaring namedtuple() Student = collections.namedtuple('Student' ['name' 'age' 'DOB']) # Adding values S = Student('Nandini' '19' '2541997') # Access using getattr() print('The Student DOB using getattr() is : ' end='') print(getattr(S 'DOB')) 

Излаз
The Student DOB using getattr() is : 2541997 

Операције конверзије

Именоване групе пружају неколико корисних операција конверзије за рад са другим типовима података Питхон . Испод су следеће операције конверзије које су обезбеђене за намедтупле у Питхон-у:

  • Коришћење _маке()
  • Коришћење _асдицт()
  • Коришћење оператора ** (двострука звездица).

Конверзија помоћу _маке()

Ова функција се користи за враћање а намедтупле() из итерабле прошао као аргумент. У овом примеру користимо _маке() да конвертујемо листу 'ли' у намедтупле.

Python
# importing 'collections' for namedtuple() import collections # Declaring namedtuple() Student = collections.namedtuple('Student' ['name' 'age' 'DOB']) # Adding values S = Student('Nandini' '19' '2541997') # initializing iterable li = ['Manjeet' '19' '411997'] di = {'name': 'Nikhil' 'age': 19 'DOB': '1391997'} # using _make() to return namedtuple() print('The namedtuple instance using iterable is : ') print(Student._make(li)) 

Излаз
The namedtuple instance using iterable is : Student(name='Manjeet' age='19' DOB='411997') 

Операција конверзије помоћу _асдицт()

Ова функција се враћа тхе ОрдередДицт() као што је конструисано од мапираних вредности намедтупле(). У овом примеру користимо _асдицт() да конвертујемо улазну листу у инстанцу намедтупле.

Python
import collections # Declaring namedtuple() Student = collections.namedtuple('Student' ['name' 'age' 'DOB']) # Adding values S = Student('Nandini' '19' '2541997') # initializing iterable li = ['Manjeet' '19' '411997'] # initializing dict di = {'name': 'Nikhil' 'age': 19 'DOB': '1391997'} # using _asdict() to return an OrderedDict() print('The OrderedDict instance using namedtuple is : ') print(S._asdict()) 

Излаз
The OrderedDict instance using namedtuple is : OrderedDict([('name' 'Nandini') ('age' '19') ('DOB' '2541997')]) 

Коришћење оператора '**' (двострука звездица).

Ова функција се користи за претварање речника у намедтупле(). У овом примеру користимо '**' да конвертујемо улазну листу у намедтупле.

Python
import collections # Declaring namedtuple() Student = collections.namedtuple('Student' ['name' 'age' 'DOB']) # Adding values S = Student('Nandini' '19' '2541997') # initializing iterable li = ['Manjeet' '19' '411997'] # initializing dict di = {'name': 'Nikhil' 'age': 19 'DOB': '1391997'} # using ** operator to return namedtuple from dictionary print('The namedtuple instance from dict is : ') print(Student(**di)) 

Излаз
The namedtuple instance from dict is : Student(name='Nikhil' age=19 DOB='1391997') 

Додатне операције 

Постоје неке додатне операције које су предвиђене у Питхон за НамедТуплес:

  • _фиелдс
  • _реплаце()
  • __ново__()
  • __гетневаргс__()

_фиелдс

Овај атрибут података се користи за добијање сва кључна имена декларисаног именског простора. У овом примеру користимо _фиелдс да добијемо сва декларисана имена кључева простора имена.

Python
import collections Student = collections.namedtuple('Student' ['name' 'age' 'DOB']) # Adding values S = Student('Nandini' '19' '2541997') # using _fields to display all the keynames of namedtuple() print('All the fields of students are : ') print(S._fields) 

Излаз
All the fields of students are : ('name' 'age' 'DOB') 

_реплаце()

_реплаце() је као стр.реплаце(), али циља именована поља (не мења оригиналне вредности). У овом примеру користимо _реплаце() да заменимо име из 'Нандини' у 'Мањеет'.

Python
import collections # Declaring namedtuple() Student = collections.namedtuple('Student' ['name' 'age' 'DOB']) # Adding values S = Student('Nandini' '19' '2541997') # ._replace returns a new namedtuple  # it does not modify the original print('returns a new namedtuple : ') print(S._replace(name='Manjeet')) 

Излаз
returns a new namedtuple : Student(name='Manjeet' age='19' DOB='2541997') 

__ново__()

Ова функција враћа нову инстанцу класе Студент узимајући вредности које желимо да доделимо кључевима у именованом тупле-у. У овом примеру користимо __нев__() да вратимо нову инстанцу класе Студент.

пикадо листа
Python
import collections # Declaring namedtuple() Student = collections.namedtuple('Student' ['name' 'age' 'DOB']) # Adding values S = Student('Nandini' '19' '2541997') # Student.__new__ returns a new instance of Student(nameageDOB) print(Student.__new__(Student'Himesh''19''26082003')) 

Излаз
Student(name='Himesh' age='19' DOB='26082003') 

__гетневаргс__()

Ова функција враћа именовану торку као обичну торку. У овом примеру радимо исто користећи __гетневаргс__().

Python
import collections # Declaring namedtuple() Student = collections.namedtuple('Student' ['name' 'age' 'DOB']) # Adding values S = Student('Nandini' '19' '2541997') H=Student('Himesh''19''26082003') # .__getnewargs__ returns the named tuple as a plain tuple print(H.__getnewargs__()) 

Излаз
('Himesh' '19' '26082003') 
    1. Променљивост : Инстанце класе могу бити променљиве или непроменљиве докnamedtupleинстанце су непроменљиве.
    2. Методе : Класе могу да садрже методе (функције) вхилеnamedtupleпрвенствено пружа начин складиштења података са именованим пољима.
    3. Наслеђе : Класе подржавају наслеђивање омогућавајући стварање сложених хијерархијаnamedtupleне подржава наслеђивање.

    Која је разлика између откуцаног дицта и намедтупле?

    1. Типе Цхецкинг :TypedDict(одtypingмодул) пружа наговештаје типа за речнике са специфичним паровима кључ/вредност корисним за проверу типа.namedtupleне даје наговештаје типа.
    2. Променљивост :TypedDictинстанце су променљиве и дозвољавају промене вредности докnamedtupleинстанце су непроменљиве.
    3. Структура :TypedDictсе користи за дефинисање структуре речника са специфичним типовима за сваки кључ докnamedtupleпружа именована поља за податке налик на тупле.