ディクショナリはキーと値のマッピングであり、一般に柔軟な構造を持つために使用されます。クラス インスタンスは、一連のプロパティを持つオブジェクトであり、通常、すべてが同様の構造を持つ多数のオブジェクトがある場合に使用されます。
あなたの「辞書テンプレート」は、実際にはクラスのように聞こえます (そして、この単一のテンプレートに適合する必要があるすべての辞書は、クラスのインスタンスになります)。これらの辞書を、キーと値のペアの未知のセットのコレクションにしないようにするためです。ただし、既知の名前で特定の標準的な値のセットを含める必要があります。
collections.namedtuple
は、まさにこの種のクラス (インスタンスが特定のフィールド セットを持つ単なるオブジェクトであるクラス) を構築して使用するための非常に軽量な方法です。例:
>>> from collections import namedtuple
>>> MenuItem = namedtuple('MenuItem', ['name', 'ing'])
>>> thing = MenuItem("Pesto", ["Basil", "Olive oil", "Pine nuts", "Garlic"])
>>> print thing
MenuItem(name='Pesto', ing=['Basil', 'Olive oil', 'Pine nuts', 'Garlic'])
>>> thing.name
'Pesto'
>>> thing.ing
['Basil', 'Olive oil', 'Pine nuts', 'Garlic']
「欠点」は、それらがまだタプルであり、不変であることです。私の経験では、これは通常、小さくて単純なプレーンデータ オブジェクトには良いことですが、考えている使用法では欠点になる可能性があります。