[解決済み】いつ、なぜ、辞書の代わりに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
.
関連
-
Python カメの描画コマンドとその例
-
[解決済み】Python elifの構文が無効です【終了しました
-
[解決済み] 文字列リテラルの前にある'b'文字は何を意味するのでしょうか?
-
[解決済み] 最小限の驚き」と「変更可能なデフォルトの引数
-
[解決済み] 割り当て後にリストが予期せず変更されました。その理由と防止策を教えてください。
-
[解決済み] Python 3で「1000000000000000 in range(1000000000000001)」はなぜ速いのですか?
-
[解決済み] なぜlist.join(string)ではなくstring.join(list)なのでしょうか?
-
[解決済み] リストに値が存在するかどうかを確認する最速の方法
-
[解決済み] なぜ[]はlist()よりも速いのですか?
-
[解決済み] なぜpythonはforやwhileループの後に'else'を使うのですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
PythonによるLeNetネットワークモデルの学習と予測
-
Python Decorator 練習問題
-
Evidentlyを用いたPythonデータマイニングによる機械学習モデルダッシュボードの作成
-
Pythonショートビデオクローラーチュートリアル
-
[解決済み】ilocが「IndexError: single positional indexer is out-of-bounds」を出す。
-
[解決済み】TypeError: re.findall()でバイトのようなオブジェクトに文字列パターンを使用することはできません。)
-
[解決済み】終了コード -1073741515 (0xC0000135)でプロセス終了)
-
[解決済み】cアンダースコア式`c_`は、具体的に何をするのですか?
-
[解決済み] Pythonの「名前付きタプル」とは何ですか?
-
[解決済み】Python 3.6+で辞書は順番に並びますか?