Namedtuple CPU-speed performance for some common operations is TERRIBLE compared to dictionaries, at least on 2.7. Orders of magnitude difference. So bad that it really matters. It's shocking how bad the implementors got this.
[1] https://github.com/python/cpython/blob/master/Lib/collection...
[1] https://github.com/python/cpython/blob/2.7/Python/ceval.c#L1...
[2] https://github.com/python/cpython/blob/master/Python/ceval.c...
>>> nt = namedtuple('nt', 'a b')
>>> nt10k = [nt(1, 2) for i in range(10000)]
>>> dict10k = [{'a':1, 'b':2} for i in range(10000)]
>>> timeit pickle.dumps(nt10k)
10 loops, best of 3: 26.3 ms per loop
>>> timeit pickle.dumps(dict10k)
100 loops, best of 3: 2.49 ms per loop