Питхон подржава тип речника контејнера који се зове ' намедтупле() 'присутно у модулу' збирке '. У овом чланку ћемо видети како да креирате НамеТупле и операције на НамедТупле.
Шта је НамедТупле у Питхон-у?
У Питхон НамедТупле је присутан унутар модул колекције . Пружа начин за креирање једноставних лаких структура података сличних класи, али без додатних трошкова дефинисања пуне класе. Као и речници, они садрже кључеве који су хеширани на одређену вредност. Напротив, подржава и приступ из кључ/вредност и понављање функционалности које речници недостатак.
Синтакса Питхон НамедТупле
намедтупле(име_типа поља_намена)
- типенаме - Име именоване групе.
- фиелд_намес - Листа атрибута ускладиштених у намедтупле.
Пример: Имплементација кода НамедТупле је приказана у Питхон .
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
Операције на НамедТупле
Испод су следеће операције које се могу обавити коришћењем намедтупле():
- Креирајте НамеТупле
- Операције приступа
- Операције конверзије
- Додатне операције
Креирајте НамеТупле у Питхон-у
Ово креира нову класу намедтупле користећи функцију намедтупле() из збирке модул. Први аргумент је име нове класе, а други аргумент је листа имена поља.
Pythonfrom 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')
Операција конверзије помоћу _асдицт()
Ова функција се враћа тхе ОрдередДицт() као што је конструисано од мапираних вредности намедтупле(). У овом примеру користимо _асдицт() да конвертујемо улазну листу у инстанцу намедтупле.
Pythonimport 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')]) Коришћење оператора '**' (двострука звездица).
Ова функција се користи за претварање речника у намедтупле(). У овом примеру користимо '**' да конвертујемо улазну листу у намедтупле.
Pythonimport 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')
Додатне операције
Постоје неке додатне операције које су предвиђене у Питхон за НамедТуплес:
- _фиелдс
- _реплаце()
- __ново__()
- __гетневаргс__()
_фиелдс
Овај атрибут података се користи за добијање сва кључна имена декларисаног именског простора. У овом примеру користимо _фиелдс да добијемо сва декларисана имена кључева простора имена.
Pythonimport 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') _реплаце()
_реплаце() је као стр.реплаце(), али циља именована поља (не мења оригиналне вредности). У овом примеру користимо _реплаце() да заменимо име из 'Нандини' у 'Мањеет'.
Pythonimport 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')
__гетневаргс__()
Ова функција враћа именовану торку као обичну торку. У овом примеру радимо исто користећи __гетневаргс__().
Pythonimport 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') 
- Променљивост : Инстанце класе могу бити променљиве или непроменљиве док
namedtupleинстанце су непроменљиве.- Методе : Класе могу да садрже методе (функције) вхиле
namedtupleпрвенствено пружа начин складиштења података са именованим пољима.- Наслеђе : Класе подржавају наслеђивање омогућавајући стварање сложених хијерархија
namedtupleне подржава наслеђивање.
Која је разлика између откуцаног дицта и намедтупле?
- Типе Цхецкинг :
TypedDict(одtypingмодул) пружа наговештаје типа за речнике са специфичним паровима кључ/вредност корисним за проверу типа.namedtupleне даје наговештаје типа.- Променљивост :
TypedDictинстанце су променљиве и дозвољавају промене вредности докnamedtupleинстанце су непроменљиве.- Структура :
TypedDictсе користи за дефинисање структуре речника са специфичним типовима за сваки кључ докnamedtupleпружа именована поља за податке налик на тупле.
