Namedtuple in Python
Python supports a type of container like dictionaries called “namedtuple()” present in the module, “collections“. Like dictionaries, they contain keys that are hashed to a particular value. But on contrary, it supports both access from key-value and iteration, the functionality that dictionaries lack.
Example:
Python3
# Python code to demonstrate namedtuple()from collections import namedtuple# Declaring namedtuple()Student = namedtuple('Student', ['name', 'age', 'DOB'])# Adding valuesS = Student('Nandini', '19', '2541997')# Access using indexprint("The Student age using index is : ", end="")print(S[1])# Access using nameprint("The Student name using keyname is : ", end="")print(S.name) |
Output:
The Student age using index is : 19 The Student name using keyname is : Nandini
Let’s see various Operations on namedtuple()
Access Operations
- Access by index: The attribute values of namedtuple() are ordered and can be accessed using the index number unlike dictionaries which are not accessible by index.
- Access by keyname: Access by keyname is also allowed as in dictionaries.
- using getattr(): This is yet another way to access the value by giving namedtuple and key value as its argument.
Python3
# Python code to demonstrate namedtuple() and# Access by name, index and getattr()# importing "collections" for namedtuple()import collections# Declaring namedtuple()Student = collections.namedtuple('Student', ['name', 'age', 'DOB'])# Adding valuesS = Student('Nandini', '19', '2541997')# Access using indexprint("The Student age using index is : ", end="")print(S[1])# Access using nameprint("The Student name using keyname is : ", end="")print(S.name)# Access using getattr()print("The Student DOB using getattr() is : ", end="")print(getattr(S, 'DOB')) |
Output :
The Student age using index is : 19 The Student name using keyname is : Nandini The Student DOB using getattr() is : 2541997
Conversion Operations
- _make() :- This function is used to return a namedtuple() from the iterable passed as argument.
- _asdict() :- This function returns the OrderedDict() as constructed from the mapped values of namedtuple().
- using “**” (double star) operator :- This function is used to convert a dictionary into the namedtuple().
Python3
# Python code to demonstrate namedtuple() and# _make(), _asdict() and "**" operator# importing "collections" for namedtuple()import collections# Declaring namedtuple()Student = collections.namedtuple('Student', ['name', 'age', 'DOB'])# Adding valuesS = Student('Nandini', '19', '2541997')# initializing iterableli = ['Manjeet', '19', '411997']# initializing dictdi = {'name': "Nikhil", 'age': 19, 'DOB': '1391997'}# using _make() to return namedtuple()print("The namedtuple instance using iterable is : ")print(Student._make(li))# using _asdict() to return an OrderedDict()print("The OrderedDict instance using namedtuple is : ")print(S._asdict())# using ** operator to return namedtuple from dictionaryprint("The namedtuple instance from dict is : ")print(Student(**di)) |
Output :




.png)