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

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

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

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

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

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

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

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

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 пружа именована поља за податке налик на тупле.