Skip to main content

Pythonic Data Structures

Named Tuples and Data Classes

0:00
LearnStep 1/3

Structuring Data: Beyond Tuples and Dicts

When handling structured data, beginners often rely on plain tuples or dictionaries. While flexible, these have downsides: tuples require remembering indices (point[0] vs point.x), and dictionaries can use more memory and lack structural guarantees.

1. collections.namedtuple

For simple, immutable data containers, namedtuple is an excellent built-in solution. It behaves like a tuple but allows field access by name, making your code self-documenting.

python

2. dataclasses (Python 3.7+)

For more complex data objects, especially when you need type hints, mutable fields, or default values, the @dataclass decorator is the modern idiomatic choice. It automatically generates special methods like __init__, __repr__, and __eq__ for you.

python

3. Immutability with frozen=True

To make a dataclass immutable (read-only) and hashable (usable as a dictionary key or in a set), use frozen=True.

python

4. Validation with __post_init__

Dataclasses allow you to hook into the initialization process using __post_init__. This is perfect for validating data immediately after the object is created.

python