辞書は、一般的に柔軟な構造を持つために使用されるキーと値のマッピングです。クラスインスタンスは、多くのオブジェクトが類似した構造を持つ場合に一般的に使用される一連のプロパティを持つオブジェクトです。
あなたの「辞書テンプレート」は、これらの辞書が未知のキーセットのコレクションではないようにするために、クラス(そしてこのテンプレートに合う必要があるすべての辞書はクラスのインスタンスになります)既知の名前の下に特定の標準的な値のセットを含めることができます。
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']
「欠点」は、それらがまだタプルであり、不変であるということです。私の経験では、これは通常、小さな単純なプレーンデータオブジェクトのための良いことですが、それはあなたが念頭に置いて使用するための欠点かもしれません。
出典
2013-10-30 04:58:28
Ben
どのように単に{「MENU_ITEM」:「成分」、...}のことについての代わりに、「名前を持ちます'と' ing 'を追加の処理ステップとして使用します。あなたのロジックを少しシンプルにするでしょう。 –
['collections.namedtuple'](http://docs.python.org/2/library/collections.html#collections.namedtuple)はどうですか? – BrenBarn
、あるいはちょうどタプル?名前と値のペアはかなり一般的です。 – Eevee