Python obsługuje typ słownika kontenerowego o nazwie nazwana krotka() obecny w module zbiory . W tym artykule zobaczymy, jak utworzyć NameTuple i wykonać operacje na NamedTuple.
Co to jest NamedTuple w Pythonie?
W Pyton , NamedTuple jest obecny wewnątrz moduł kolekcji . Umożliwia tworzenie prostych, lekkich struktur danych podobnych do klas, ale bez konieczności definiowania pełnej klasy. Podobnie jak słowniki, zawierają klucze, które są skrótem do określonej wartości. Wręcz przeciwnie, obsługuje zarówno dostęp z pary klucz-wartość, jak i iterację, a funkcjonalność ta słowniki brak.
Składnia NamedTuple w języku Python
o nazwietuple(nazwa typu, nazwy_pola)
- typename – nazwa nazwanej krotki.
- nazwy_pola – lista atrybutów przechowywanych w nazwanej krotce.
Przykład: Implementacja kodu NamedTuple jest pokazana w Pyton .
Java matematyczna.minPython3
# 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)> Wyjście
The Student age using index is : 19 The Student name using keyname is : Nandini>
Operacje na NamedTuple
Poniżej znajdują się następujące operacje, które można wykonać za pomocą metody Nametuple():
- Utwórz NameTuple
- Dostęp do operacji
- Operacje konwersji
- Dodatkowe operacje
Utwórz NameTuple w Pythonie
Spowoduje to utworzenie nowej klasy o nazwie nazwanej przy użyciu funkcji o nazwietuple() z pliku zbiory moduł. Pierwszy argument to nazwa nowej klasy, a drugi to lista nazw pól.
pętla do i while w JaviePython3
from collections import namedtuple Point = namedtuple('Point', ['x', 'y']) p = Point(x=1, y=2) print(p.x, p.y)> Wyjście
1 2>
Dostęp do operacji
Namedtuple w Pythonie zapewniają wygodne sposoby dostępu do swoich pól. Poniżej znajdują się niektóre operacje dostępu dostępne w Pythonie dla NamedTuple:
- Dostęp według indeksu
- Dostęp według nazwy klucza
- Dostęp za pomocą getattr()
Dostęp według indeksu
Wartości atrybutów nazwanej() są uporządkowane i można uzyskać do nich dostęp za pomocą numeru indeksu, w przeciwieństwie do słowników, do których nie można uzyskać dostępu za pomocą indeksu. W tym przykładzie uzyskujemy dostęp do ucznia za pomocą indeksu.
Python3 # 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])> Wyjście
The Student age using index is : 19>
Dostęp według nazwy klucza
Dostęp według nazwy klucza jest również dozwolony, tak jak w słownikach. W tym przykładzie używamy nazwy klucza, aby uzyskać dostęp do nazwiska ucznia.
węzeł listy w JaviePython3
# 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)> Wyjście
The Student name using keyname is : Nandini>
Dostęp za pomocą getattr()
Jest to kolejny sposób uzyskania dostępu do wartości poprzez podanie nazwanej krotki i wartości klucza jako argumentu. W tym przykładzie używamy getattr(), aby uzyskać dostęp do identyfikatora ucznia w podanej nazwanej krotce.
Python3 # 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'))> Wyjście
The Student DOB using getattr() is : 2541997>
Operacje konwersji
Namedtuple udostępniają kilka przydatnych operacji konwersji do pracy z innymi typami danych Pyton . Poniżej znajdują się następujące operacje konwersji dostępne dla nazwanych krotek w Pythonie:
- Używanie _make()
- Używanie _asdict()
- Używanie operatora ** (podwójna gwiazdka).
Konwersja przy użyciu _make()
Ta funkcja służy do zwracania a o nazwietuple() z iterowalnej przekazane jako argument. W tym przykładzie używamy _make() do konwersji listy li na nazwaną krotkę.
Python3 # 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))> Wyjście
The namedtuple instance using iterable is : Student(name='Manjeet', age='19', DOB='411997')>
Operacja konwersji przy użyciu _asdict()
Ta funkcja zwraca the ZamówioneDict() skonstruowane na podstawie odwzorowanych wartości metodydtuple(). W tym przykładzie używamy _asdict() do konwersji listy wejściowej na instancję nazwaną.
Python3 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())> Wyjście
The OrderedDict instance using namedtuple is : OrderedDict([('name', 'Nandini'), ('age', '19'), ('DOB', '2541997')])> Używanie operatora ** (podwójna gwiazdka).
Ta funkcja służy do konwersji słownika na metodę nazwaną(). W tym przykładzie używamy ** do konwersji listy wejściowej na nazwaną krotkę.
podaj nazwę miasta w USAPython3
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))> Wyjście
The namedtuple instance from dict is : Student(name='Nikhil', age=19, DOB='1391997')>
Dodatkowe operacje
Istnieją pewne dodatkowe operacje, które są dostępne w Pyton dla NamedTuples:
- _pola
- _zastępować()
- __nowy__()
- __getnewwargs__()
_pola
Ten atrybut danych służy do pobierania wszystkie nazwy klawiszy zadeklarowanej przestrzeni nazw. W tym przykładzie używamy _fields, aby uzyskać wszystkie nazwy kluczy zadeklarowanej przestrzeni nazw.
Python3 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)> Wyjście
All the fields of students are : ('name', 'age', 'DOB')> _zastępować()
Funkcja _replace() jest podobna do str.replace(), ale jej celem są pola nazwane (nie modyfikuje oryginalnych wartości). W tym przykładzie używamy funkcji _replace(), aby zastąpić nazwę z Nandini na Manjeet.
Python3 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'))> Wyjście
returns a new namedtuple : Student(name='Manjeet', age='19', DOB='2541997')>
__nowy__()
Funkcja ta zwraca nową instancję klasy Student, pobierając wartości, które chcemy przypisać do kluczy w nazwanej krotce. W tym przykładzie używamy __new__() w celu zwrócenia nowej instancji klasy Student.
Python3 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(name,age,DOB) print(Student.__new__(Student,'Himesh','19','26082003'))> Wyjście
Student(name='Himesh', age='19', DOB='26082003')>
__getnewargs__()
Ta funkcja zwraca nazwaną krotkę jako zwykłą krotkę. W tym przykładzie robimy to samo, używając __getnewargs__().
Python3 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__())> Wyjście
('Himesh', '19', '26082003')>