[解決済み] ネストされたPythonのdictをオブジェクトに変換する?
2022-03-16 14:25:54
質問
ネストされたdictやリストに対して、属性アクセスを使ってデータを取得するエレガントな方法を探しています(つまり、javascriptスタイルのオブジェクト構文です)。
例えば
>>> d = {'a': 1, 'b': {'c': 2}, 'd': ["hi", {'foo': "bar"}]}
このようにアクセスできるようにする必要があります。
>>> x = dict2obj(d)
>>> x.a
1
>>> x.b.c
2
>>> x.d[1].foo
bar
再帰性がないと無理だと思うのですが、ディクスのオブジェクト・スタイルを得るにはどうしたらいいでしょうか?
どのように解決するのですか?
更新してください。
Python 2.6 以降のバージョンでは
namedtuple
のデータ構造は、あなたのニーズに合っています。
>>> from collections import namedtuple
>>> MyStruct = namedtuple('MyStruct', 'a b d')
>>> s = MyStruct(a=1, b={'c': 2}, d=['hi'])
>>> s
MyStruct(a=1, b={'c': 2}, d=['hi'])
>>> s.a
1
>>> s.b
{'c': 2}
>>> s.c
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
AttributeError: 'MyStruct' object has no attribute 'c'
>>> s.d
['hi']
代替案(本来の回答内容)は
class Struct:
def __init__(self, **entries):
self.__dict__.update(entries)
次に
>>> args = {'a': 1, 'b': 2}
>>> s = Struct(**args)
>>> s
<__main__.Struct instance at 0x01D6A738>
>>> s.a
1
>>> s.b
2
関連
-
Pythonの学習とデータマイニングのために知っておくべきターミナルコマンドのトップ10
-
Pythonの画像ファイル処理用ライブラリ「Pillow」(グラフィックの詳細)
-
[解決済み] JavaScriptでオブジェクトをディープクローンする最も効率的な方法は何ですか?
-
[解決済み] JavaScriptのオブジェクトにキーが存在するかどうかをチェックする?
-
[解決済み] バイトを文字列に変換する
-
[解決済み] Pythonの辞書からキーを削除するにはどうしたらいいですか?
-
[解決済み] オブジェクトの種類を決定しますか?
-
[解決済み】ネストされたディレクトリを安全に作成するには?
-
[解決済み】未定義のオブジェクトプロパティを検出する
-
[解決済み】Pythonに三項条件演算子はありますか?
最新
-
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の学習とデータマイニングのために知っておくべきターミナルコマンドのトップ10
-
Pythonコードの可読性を向上させるツール「pycodestyle」の使い方を詳しく解説します
-
Python入門 openを使ったファイルの読み書きの方法
-
Python LeNetネットワークの説明とpytorchでの実装
-
[解決済み】numpyの配列連結。"ValueError:すべての入力配列は同じ次元数でなければならない"
-
[解決済み】syntaxError: 'continue' がループ内で適切に使用されていない
-
[解決済み] ドット". "を使って辞書のメンバーにアクセスするには?
-
[解決済み】Python2のdict.items()とdict.iteritems()の違いは何ですか?
-
[解決済み】クラスにプロパティを動的に追加する方法は?
-
[解決済み] [JSONデータをPythonのオブジェクトに変換するには?