Actually the reason why records are built over an underlying list (and not a dict or OrderedDict) is that the Qt TableModel naturally work by indexes. So if I remove name2index in the record classes I need to add an index2name dictionary in the Qt interface. I don't know which is more convenient. namedtuples work by index and they were my inspirations for records. Probably more thinking and more use cases in real situations is needed before deciding on an interface, this is why I tried to provide both access by name and access by index.