可能性の重複:
What are “named tuples” in Python?辞書の代わりにいつnamedtupleを使うべきですか?
namedtupleを使用しなければならない状況とは何ですか?
私はそれを調べると、タプルを辞書のようにする方法のように見えました。彼らは辞書とどのように比較されますか?
名前付きタプルには辞書のハッシュ可能な型だけを使用できますか?
可能性の重複:
What are “named tuples” in Python?辞書の代わりにいつnamedtupleを使うべきですか?
namedtupleを使用しなければならない状況とは何ですか?
私はそれを調べると、タプルを辞書のようにする方法のように見えました。彼らは辞書とどのように比較されますか?
名前付きタプルには辞書のハッシュ可能な型だけを使用できますか?
dict
では、キーだけが値ではなくハッシュ可能でなければなりません。 namedtuple
にはキーがないので、ハッシュの可能性は問題になりません。
しかし、それらはより厳しい制限を持っています - それらのキー同等物 "フィールド名"は文字列でなければなりません。基本的には
、あなたのようなクラスのインスタンスの束を作成するつもりだった場合:あなたが__init__
でそれらを設定した後
class Container:
def __init__(self, name, date, foo, bar):
self.name = name
self.date = date
self.foo = foo
self.bar = bar
mycontainer = Container(name, date, foo, bar)
と属性を変更しないで、あなたの代わりに
Container = namedtuple('Container', ['name', 'date', 'foo', 'bar'])
mycontainer = Container(name, date, foo, bar)
を使用することができます
を置き換えてください。
もちろん、あなたが各1で同じキーを使用dict
Sの束を作成することもできますが、あなたはキーとしてのみ有効なPython識別子を持つことになりますし、可変性を必要としないと仮定すると、
mynamedtuple.fieldname
きれいより
mydict['fieldname']
と
mynamedtuple = MyNamedTuple(firstvalue, secondvalue)
がきれいです
mydict = {'fieldname': firstvalue, 'secondfield': secondvalue}
よりも最後に、namedtuple
Sは、正規dict
のとは違って、注文されているので、あなたは、あなたがdict
とは異なり、フィールドを定義された順序でアイテムを取得します。
Raymondhの引用: "名前付きタプルのインスタンスは通常のタプルよりもスペースを使いません。フィールド名のプロパティは名前付きタプルクラスに格納されています。" https:// twitter。com/raymondh/status/524660721968107521 – Moberg
もう1つ注目すべきは、名前付きタプルも 'mynamedtuple = MyNamedTuple(fieldname = firstvalue、secondfield = secondvalue)'として初期化できるということです。 –
タプルは名前の有無にかかわらず変更できません。 namedtuple
では、インデックスの代わりに名前を使用するだけで、アクセスがより便利になります。有効な識別子はnamedtuple
にしか使用できません。ハッシングは実行されません。代わりに新しいタイプが生成されます。
この質問を見る - http://stackoverflow.com/questions/2970608/what-are-named-tuples-in-python – ronakg
これは[上記の質問](https:///stackoverflow.com/questions/2970608/what-are-named-tuples-in-python)。 2つは相補的です。 – Dennis