[解決済み] 名前付きタプルを辞書に変換する
2022-04-16 14:03:57
質問
Pythonで名前付きタプルのクラスを持っています。
class Town(collections.namedtuple('Town', [
'name',
'population',
'coordinates',
'population',
'capital',
'state_bird'])):
# ...
Townのインスタンスを辞書に変換したい。Townのフィールド名や数に厳密に縛られたくない。
フィールドを追加したり、全く別の名前のタプルを渡してディクショナリを取得するような書き方はないでしょうか。
元のクラス定義が他の人のコードに含まれているため、変更することができません。そこで、Townのインスタンスを取得して、辞書に変換する必要があります。
どのように解決するのですか?
TL;DR: 方法がある
_asdict
が用意されています。
ここでは、その使い方のデモを紹介します。
>>> fields = ['name', 'population', 'coordinates', 'capital', 'state_bird']
>>> Town = collections.namedtuple('Town', fields)
>>> funkytown = Town('funky', 300, 'somewhere', 'lipps', 'chicken')
>>> funkytown._asdict()
OrderedDict([('name', 'funky'),
('population', 300),
('coordinates', 'somewhere'),
('capital', 'lipps'),
('state_bird', 'chicken')])
これは
文書化されたメソッド
は、名前付きタプルの、つまり、Pythonの通常の規約とは異なり
メソッド名の頭にアンダースコアがついているのは、その使用を阻止するためではありません。
. namedtuplesに追加された他のメソッドと一緒に。
_make
,
_replace
,
_source
,
_fields
この場合、フィールド名との衝突を避けるためにアンダースコアのみを使用します。
注 2.7.5 < Python version < 3.5.0 のコードで、このバージョンを目にすることがあるかもしれません。
>>> vars(funkytown)
OrderedDict([('name', 'funky'),
('population', 300),
('coordinates', 'somewhere'),
('capital', 'lipps'),
('state_bird', 'chicken')])
しばらくの間、ドキュメントに記載されていた
_asdict
は廃止されました (
ここで
を使うことを提案し、ビルトインメソッドである
バーズ
. このアドバイスはもう古いものです。
バグ
サブクラス化に関連する
__dict__
プロパティが削除されました。
このコミット
.
関連
-
PythonによるLeNetネットワークモデルの学習と予測
-
[解決済み] 辞書を値で並べ替えるにはどうしたらいいですか?
-
[解決済み] Pythonで辞書に新しいキーを追加するにはどうすればよいですか?
-
[解決済み] バイトを文字列に変換する
-
[解決済み] 与えられたキーがすでに辞書に存在するかどうかをチェックする
-
[解決済み] Pythonの辞書からキーを削除するにはどうしたらいいですか?
-
[解決済み] 辞書のリストを辞書の値でソートするにはどうしたらいいですか?
-
[解決済み] 辞書から要素を削除する
-
[解決済み] 2つのリストを辞書に変換するにはどうしたらいいですか?
-
[解決済み】文字列をdatetimeに変換する
最新
-
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サンプルコード
-
pythonを使ったオフィス自動化コード例
-
PyQt5はユーザーログインGUIインターフェースとログイン後のジャンプを実装しています。
-
pyCaret効率化乗算器 オープンソース ローコード Python機械学習ツール
-
PythonでECDSAを実装する方法 知っていますか?
-
FacebookオープンソースワンストップサービスpythonのタイミングツールKats詳細
-
[解決済み】TypeError: unhashable type: 'numpy.ndarray'.
-
[解決済み】なぜ「LinAlgError: Grangercausalitytestsから「Singular matrix」と表示されるのはなぜですか?
-
[解決済み】「OverflowError: Python int too large to convert to C long" on windows but not mac
-
[解決済み] Python で、クラスオブジェクトを dict にキャストするにはどうしたらいいですか?