I believe the benefit is to abstract away the construction details of the table keys and values, by making their components named properties:  Using named tuples ensures that the code writing the tables and that using them for lookup are using a consistent definition of the attributes and ordering, especially for the keys, and allows us to specify data components by name instead of index order.
For example, to look up a value in the dictionary + use the result, you can write...
```
data = dict[_keytype(discipline=d, category=c, number=n)]
name = data.standard_name
```
..instead of..
```
data = dict[(d, c, n)]
name = data[2]
```
..which is certainly shorter, but more cryptic and fragile.
When we need to change or extend the table contents (very likely), this should also catch any code that hasn't been updated.
Otherwise, we can easily get format mismatches between table entries, or between the table keys and lookup keys.