Python ondersteunt een type containerwoordenboek genaamd benoemddubbel() aanwezig in de module collecties . In dit artikel gaan we zien hoe u een NameTuple en bewerkingen op NamedTuple kunt maken.
Wat is NamedTuple in Python?
In Python , NamedTuple is aanwezig in de collecties module . Het biedt een manier om eenvoudige, lichtgewicht datastructuren te creëren die lijken op een klasse, maar zonder de overhead van het definiëren van een volledige klasse. Net als woordenboeken bevatten ze sleutels die zijn gehasht naar een bepaalde waarde. Integendeel, het ondersteunt zowel toegang vanuit sleutelwaarde als iteratie, de functionaliteit die dat biedt woordenboeken gebrek.
Python NamedTuple-syntaxis
benoemdtuple(typenaam, veldnamen)
- typename – De naam van de benoemde tweeling.
- field_names – De lijst met attributen die zijn opgeslagen in de benoemde tweeling.
Voorbeeld: Code-implementatie van NamedTuple wordt getoond in Python .
c++ converteert in naar stringPython3
# 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)> Uitvoer
The Student age using index is : 19 The Student name using keyname is : Nandini>
Bewerkingen op NamedTuple
Hieronder staan de volgende bewerkingen die kunnen worden uitgevoerd met nametuple():
- Maak een NaamTupel
- Toegang tot bewerkingen
- Conversiebewerkingen
- Aanvullende bewerkingen
Maak een NameTuple in Python
Hiermee wordt een nieuwe benoemdtuple-klasse gemaakt met behulp van de naamtuple()-functie uit de collecties module. Het eerste argument is de naam van de nieuwe klasse en het tweede argument is een lijst met veldnamen.
als het anders bashen isPython3
from collections import namedtuple Point = namedtuple('Point', ['x', 'y']) p = Point(x=1, y=2) print(p.x, p.y)> Uitvoer
1 2>
Toegang tot bewerkingen
Namedtuples in Python bieden handige manieren om toegang te krijgen tot hun velden. Hieronder staan enkele toegangsbewerkingen in Python voor NamedTuple:
- Toegang via index
- Toegang via sleutelnaam
- Toegang via getattr()
Toegang per index
De attribuutwaarden van genaamdtuple() zijn geordend en zijn toegankelijk via het indexnummer, in tegenstelling tot woordenboeken die niet toegankelijk zijn via de index. In dit voorbeeld hebben we toegang tot de gegevens van de leerling met behulp van index.
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])> Uitvoer
The Student age using index is : 19>
Toegang via sleutelnaam
Toegang via sleutelnaam is ook toegestaan, net als in woordenboeken. In dit voorbeeld gebruiken we sleutelnaam om toegang te krijgen tot de naam van de leerling.
ronde wiskunde JavaPython3
# 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)> Uitvoer
The Student name using keyname is : Nandini>
Toegang via getattr()
Dit is nog een andere manier om toegang te krijgen tot de waarde, door het argumentnamedtuple en de sleutelwaarde op te geven. In dit voorbeeld gebruiken we getattr() om toegang te krijgen tot de ID van de leerling in de opgegeven benoemde tupel.
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'))> Uitvoer
The Student DOB using getattr() is : 2541997>
Conversiebewerkingen
Namedtuples bieden een aantal nuttige conversiebewerkingen om met andere gegevenstypen te werken Python . Hieronder staan de volgende conversiebewerkingen die beschikbaar zijn voor benoemde tupels in Python:
- _make() gebruiken
- _asdict() gebruiken
- Gebruik de operator ** (dubbele ster).
Conversie met _make()
Deze functie wordt gebruikt om a terug te geven nametuple() uit de iterabele als argument doorgegeven. In dit voorbeeld gebruiken we _make() om de lijst li om te zetten in benoemdtuple.
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))> Uitvoer
The namedtuple instance using iterable is : Student(name='Manjeet', age='19', DOB='411997')>
Conversiebewerking met _asdict()
Deze functie retourneert de BesteldDict() zoals opgebouwd uit de toegewezen waarden van benoemdtuple(). In dit voorbeeld gebruiken we _asdict() om de invoerlijst te converteren naar een benoemde tuple-instantie.
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())> Uitvoer
The OrderedDict instance using namedtuple is : OrderedDict([('name', 'Nandini'), ('age', '19'), ('DOB', '2541997')])> Gebruik de operator ** (dubbele ster).
Deze functie wordt gebruikt om een woordenboek te converteren naar de naamtuple(). In dit voorbeeld gebruiken we ** om de invoerlijst om te zetten in benoemdtuple.
abs c-codePython3
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))> Uitvoer
The namedtuple instance from dict is : Student(name='Nikhil', age=19, DOB='1391997')>
Aanvullende bewerkingen
Er zijn enkele aanvullende bewerkingen beschikbaar Python voor benoemde tupels:
- _velden
- _vervangen()
- __nieuw__()
- __krijgnieuwewargs__()
_velden
Dit data-attribuut wordt gebruikt om alle sleutelnamen van de aangegeven naamruimte. In dit voorbeeld gebruiken we _fields om alle sleutelnamen van de gedeclareerde naamruimte op te halen.
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)> Uitvoer
All the fields of students are : ('name', 'age', 'DOB')> _vervangen()
_replace() is als str.replace() maar richt zich op benoemde velden (wijzigt de oorspronkelijke waarden niet). In dit voorbeeld gebruiken we _replace() om een naam van Nandini naar Manjeet te vervangen.
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'))> Uitvoer
returns a new namedtuple : Student(name='Manjeet', age='19', DOB='2541997')>
__nieuw__()
Deze functie retourneert een nieuw exemplaar van de klasse Student, door de waarden te nemen die we willen toewijzen aan de sleutels in de genoemde tupel. In dit voorbeeld gebruiken we __new__() om een nieuw exemplaar van de klasse Student te retourneren.
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'))> Uitvoer
Student(name='Himesh', age='19', DOB='26082003')>
__krijgnieuwewargs__()
Deze functie retourneert de benoemde tupel als een gewone tupel. In dit voorbeeld doen we hetzelfde door __getnewargs__() te gebruiken.
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__())> Uitvoer
('Himesh', '19', '26082003')>