Python unterstützt eine Art Container-Wörterbuch namens benannttuple() im Modul vorhanden Sammlungen . In diesem Artikel erfahren Sie, wie Sie ein NameTuple und Operationen für NamedTuple erstellen.
Was ist NamedTuple in Python?
In Python , NamedTuple ist im Inneren vorhanden Sammlungsmodul . Es bietet eine Möglichkeit, einfache, schlanke Datenstrukturen ähnlich einer Klasse zu erstellen, jedoch ohne den Aufwand für die Definition einer vollständigen Klasse. Wie Wörterbücher enthalten sie Schlüssel, die auf einen bestimmten Wert gehasht werden. Im Gegenteil, es unterstützt sowohl den Zugriff über den Schlüsselwert als auch die Iteration, die Funktionalität, die Wörterbücher Mangel.
Python NamedTuple-Syntax
Namedtuple(Typname, Feldnamen)
- Typname – Der Name des benannten Tupels.
- field_names – Die Liste der im benannten Tupel gespeicherten Attribute.
Beispiel: Die Code-Implementierung von NamedTuple ist in dargestellt Python .
Android-Prozess acorePython3
# 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)> Ausgabe
The Student age using index is : 19 The Student name using keyname is : Nandini>
Operationen für NamedTuple
Im Folgenden sind die folgenden Vorgänge aufgeführt, die mit der Funktion „namedtuple()“ ausgeführt werden können:
- Erstellen Sie ein NameTuple
- Zugriffsoperationen
- Konvertierungsvorgänge
- Zusätzliche Operationen
Erstellen Sie ein NameTuple in Python
Dadurch wird eine neue Namedtuple-Klasse mit der Funktion Namedtuple() aus erstellt Sammlungen Modul. Das erste Argument ist der Name der neuen Klasse und das zweite Argument ist eine Liste von Feldnamen.
MB gegen GBPython3
from collections import namedtuple Point = namedtuple('Point', ['x', 'y']) p = Point(x=1, y=2) print(p.x, p.y)> Ausgabe
1 2>
Zugriffsoperationen
Namedtuples in Python bieten bequeme Möglichkeiten, auf ihre Felder zuzugreifen. Nachfolgend sind einige Zugriffsoperationen aufgeführt, die in Python für NamedTuple bereitgestellt werden:
- Zugriff per Index
- Zugriff über Schlüsselnamen
- Zugriff mit getattr()
Zugriff nach Index
Die Attributwerte von „namedtuple()“ sind geordnet und können über die Indexnummer aufgerufen werden, im Gegensatz zu Wörterbüchern, auf die nicht über den Index zugegriffen werden kann. In diesem Beispiel greifen wir mithilfe des Index auf die Daten des Schülers zu.
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])> Ausgabe
The Student age using index is : 19>
Zugriff über Schlüsselnamen
Der Zugriff per Schlüsselname ist wie in Wörterbüchern ebenfalls zulässig. In diesem Beispiel verwenden wir keyname, um auf den Namen des Schülers zuzugreifen.
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 name print('The Student name using keyname is : ', end='') print(S.name)> Ausgabe
The Student name using keyname is : Nandini>
Zugriff mit getattr()
Dies ist eine weitere Möglichkeit, auf den Wert zuzugreifen, indem man „namedtuple“ und „key value“ als Argument angibt. In diesem Beispiel verwenden wir getattr(), um auf die Schüler-ID im angegebenen benannten Tupel zuzugreifen.
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'))> Ausgabe
The Student DOB using getattr() is : 2541997>
Konvertierungsvorgänge
Namedtuples bieten einige nützliche Konvertierungsvorgänge für die Arbeit mit anderen Datentypen Python . Nachfolgend sind die folgenden Konvertierungsvorgänge aufgeführt, die für benannte Tupel in Python bereitgestellt werden:
- Verwenden von _make()
- Verwendung von _asdict()
- Verwendung des Operators ** (Doppelstern).
Konvertierung mit _make()
Diese Funktion wird verwendet, um a zurückzugeben benannttuple() aus dem iterierbaren als Argument übergeben. In diesem Beispiel verwenden wir _make(), um die Liste li in ein Namedtuple umzuwandeln.
allgemeine SchutzverletzungPython3
# 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))> Ausgabe
The namedtuple instance using iterable is : Student(name='Manjeet', age='19', DOB='411997')>
Konvertierungsvorgang mit _asdict()
Diese Funktion gibt zurück Die OrderedDict() wie aus den zugeordneten Werten von namedtuple() konstruiert. In diesem Beispiel verwenden wir _asdict(), um die Eingabeliste in eine Namedtuple-Instanz zu konvertieren.
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())> Ausgabe
The OrderedDict instance using namedtuple is : OrderedDict([('name', 'Nandini'), ('age', '19'), ('DOB', '2541997')])> Verwendung des Operators ** (Doppelstern).
Diese Funktion wird verwendet, um ein Wörterbuch in das Namedtuple() umzuwandeln. In diesem Beispiel verwenden wir **, um die Eingabeliste in ein benanntes Tupel zu konvertieren.
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 ** operator to return namedtuple from dictionary print('The namedtuple instance from dict is : ') print(Student(**di))> Ausgabe
The namedtuple instance from dict is : Student(name='Nikhil', age=19, DOB='1391997')>
Zusätzliche Operationen
Es gibt einige zusätzliche Operationen, die in bereitgestellt werden Python für NamedTuples:
- _Felder
- _ersetzen()
- __neu__()
- __getnewargs__()
_Felder
Dieses Datenattribut wird zum Abrufen verwendet alle Schlüsselnamen des deklarierten Namensraums. In diesem Beispiel verwenden wir _fields, um alle Schlüsselnamen des deklarierten Namespace abzurufen.
SQL-Anzahl eindeutigPython3
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)> Ausgabe
All the fields of students are : ('name', 'age', 'DOB')> _ersetzen()
_replace() ähnelt str.replace(), zielt jedoch auf benannte Felder ab (ändert die ursprünglichen Werte nicht). In diesem Beispiel verwenden wir _replace(), um einen Namen von Nandini durch Manjeet zu ersetzen.
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'))> Ausgabe
returns a new namedtuple : Student(name='Manjeet', age='19', DOB='2541997')>
__neu__()
Diese Funktion gibt eine neue Instanz der Student-Klasse zurück, indem sie die Werte übernimmt, die wir den Schlüsseln im benannten Tupel zuweisen möchten. In diesem Beispiel verwenden wir __new__(), um eine neue Instanz der Student-Klasse zurückzugeben.
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'))> Ausgabe
Student(name='Himesh', age='19', DOB='26082003')>
__getnewargs__()
Diese Funktion gibt das benannte Tupel als einfaches Tupel zurück. In diesem Beispiel machen wir dasselbe, indem wir __getnewargs__() verwenden.
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__())> Ausgabe
('Himesh', '19', '26082003')>