Python Namedtuple In Collections Tutorial – Complete Guide

In today’s increasingly digital world, learning Python is more than just an interesting activity; it’s an essential skill for game developers, data scientists, and anyone seeking to make a powerful impact in tech. In this guide, we turn our focus to NamedTuples in Python, diving into this high-performance container datatype. If you’re new to the fascinating world of Python or if you’re a seasoned coder looking to refine your skills, this guide is for you.

What is a NamedTuple?

A NamedTuple, housed in Python’s collections module, is a subclass of the traditional Python tuple. It’s designed to be an easy-to-use, efficient data type that elegantly combines the immutability of a tuple with the clear syntax of a dictionary.

Why Use NamedTuples?

You may be wondering why NamedTuples are worth your time. Here’s the catch – NamedTuples provide several compelling features:

  • They are just as memory efficient as regular tuples.
  • They allow you to access elements by name using dot notation, which can significantly enhance code readability.
  • Their immutable nature ensures data consistency and protection against inadvertent changes – a must-have feature in complex, collaborative projects.

Are you excited yet? You should be, because NamedTuples can open a lot of doors when it comes to clean, clear coding. Plus, being well-versed in Python NamedTuple handling can elevate your programming skills and make you a valuable asset in your future coding journey.

CTA Small Image

Creating and Using a NamedTuple

Creating a NamedTuple is straightforward. Start by importing the collections module, then use the namedtuple function to create your NamedTuple. This function takes two arguments: the name of the tuple and a string containing field names.

import collections
Person = collections.namedtuple('Person', 'name age')

To use the NamedTuple, simply create an instance of it and populate the fields:

alice = Person(name='Alice', age=25)

This would output:

Person(name='Alice', age=25)

Accessing the fields of a NamedTuple use the dot notation:

print(  # Outputs: 'Alice'
print(alice.age)   # Outputs: 25

Modifying a NamedTuple

Remember, NamedTuples are immutable, so you can’t change their values once assigned. However, Python provides a workaround using the _replace() function:

alice = alice._replace(age=26)
print(alice)  # Outputs: Person(name='Alice', age=26)

With the _replace() function, a new NamedTuple with the altered field is created, and the original remains untouched.

Converting NamedTuple to Dictionary

Sometimes, you may want to convert a NamedTuple to a dictionary. This is achievable using the _asdict() method:

person_dict = alice._asdict()
print(person_dict)  # Outputs: OrderedDict([('name', 'Alice'), ('age', 26)])

Iterating Over a NamedTuple

To iterate over a NamedTuple, use a for loop:

for field in alice:

This would output:


And there you go, a comprehensive look at NamedTuples in Python. With NamedTuples in your toolbox, your code can be clean, lean, and mean!

Multiple NamedTuples in a List

You can store multiple NamedTuples within a list, offering a structured and efficient way to handle multi-record data:

import collections
Person = collections.namedtuple('Person', 'name age')
people = [Person('Alice', 25), Person('Bob', 30), Person('Charlie', 35)]

You can access specific records using list indexing. For example, to access ‘Alice’:

print(people[0])  # Outputs: Person(name='Alice', age=25)

Sorting NamedTuples

NamedTuples can be sorted using Python’s inbuilt sort function. You can sort by any field in the NamedTuple:

sorted_people = sorted(people, key=lambda person: person.age)
print(sorted_people)  # Outputs: [Person(name='Alice', age=25), Person(name='Bob', age=30), Person(name='Charlie', age=35)]

Adding Additional Fields to a NamedTuple

Once a NamedTuple is created, you cannot add additional fields to it. However, you can create a new NamedTuple based on the existing one:

Person = collections.namedtuple('Person', Person._fields + ('gender',))
alice = Person('Alice', 25, 'Female')
print(alice)  # Outputs: Person(name='Alice', age=25, gender='Female')

Handling Missing Fields in a NamedTuple

If a field is missing when creating a NamedTuple, Python raises a TypeError:

alice = Person('Alice', 25)

To manage this, provide a default value using the _make() function:

Person = collections.namedtuple('Person', 'name age gender')
alice = Person._make(['Alice', 25, 'Female'])
print(alice)  # Outputs: Person(name='Alice', age=25, gender='Female')

So there you have it – NamedTuples in Python, a handy tool that can make your coding cleaner, more efficient and easy to read, adding significant value to your development journey. At Zenva, we are always dedicated to enhance your learning experience with easy to follow, practical guides just like this one. Happy coding!

Where to Go Next?

Having unlocked the secrets to NamedTuples in Python, you might now be wondering, “what’s next?” Consider this your stepping stone to an even bigger Python-oriented journey. Python, with its versatility and efficiency, offers countless more remarkable functionalities to explore.

At Zenva, we offer a rich variety of Python courses tailor-designed to boost your Python prowess further. Whether you are keen on coding basics, object-oriented programming, game development, or app development, our meticulous curriculum has got you covered.

But if you ask us where to go next, we’d suggest our comprehensive Python Mini-Degree. It’s more than just a course; it’s a well-rounded journey that will equip you with the confidence and skills to create games, build apps, and explore trending tech fields like data science and AI.

Our courses aren’t just tutorials; they are comprehensive guides offering hands-on projects and exercises to reinforce your learning. All content is self-paced and accessible anytime, anywhere, on any device.

Furthermore, by being part of Zenva, you join a worldwide community of over a million like-minded learners. Many have used our immersive courses to start businesses, land dream jobs, and publish games.


It’s exciting to witness how deceptively simple concepts like NamedTuples can drive you further towards mastery in Python. NamedTuples combine the best of both dictionaries and tuples, demonstrating the elegant, powerful design that Python encapsulates.

Don’t stop at NamedTuples, there’s a whole world of Python waiting for you. Hence, dive in, keep exploring, and keep learning. Whether you’re a beginner or a pro, our Python Mini-Degree has something for everyone. Embrace the opportunity and let’s accelerate your journey towards Python proficiency together with Zenva. Coding greatness awaits you!

Did you come across any errors in this tutorial? Please let us know by completing this form and we’ll look into it!

Python Blog Image

FINAL DAYS: Unlock coding courses in Unity, Godot, Unreal, Python and more.