1. ホーム
  2. パイソン

[解決済み】いつ、なぜ、辞書の代わりにnamedtupleを使用する必要がありますか?[重複している]。

2022-04-08 22:30:03

質問

<ブロッククオート

重複の可能性があります。

Pythonの「名前付きタプル」とは何ですか?

namedtupleを使うべき状況とは?

調べてみると、タプルをより辞書に近づけるための方法のようでした。辞書と比べるとどうなんでしょうか?

namedtuplesは、辞書と同じハッシュ型しか使えないのですか?

どのように解決するのですか?

dict の場合、キーだけがハッシュ可能でなければならず、値はハッシュ可能ではありません。 namedtuple はキーを持たないので、ハッシュ化可能性は問題ではありません。

キーに相当するフィールド名は文字列でなければならないのです。

基本的に、このようなクラスのインスタンスを大量に作ろうとすると

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)

そして で設定した属性は変更されません。 __init__ , を使用すると、代わりに

Container = namedtuple('Container', ['name', 'date', 'foo', 'bar'])

mycontainer = Container(name, date, foo, bar)

を置換してください。

もちろん、たくさんの dict しかし、有効なPython識別子のみをキーとし、ミュータビリティを必要としないと仮定すると、それぞれのキーで同じキーを使用します。

mynamedtuple.fieldname

の方がきれいです。

mydict['fieldname']

そして

mynamedtuple = MyNamedTuple(firstvalue, secondvalue)

の方がきれいです。

mydict = {'fieldname': firstvalue, 'secondfield': secondvalue}

最後に namedtuple は、通常の dict とは異なり、フィールドを定義した順番に項目が表示されます。 dict .