ネストされた Python 辞書をオブジェクトに変換する方法
便宜上、ネストされた Python 辞書を含む辞書の属性アクセスを使用してデータにアクセスすることが望ましいです。辞書とリスト。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
このような関数を作成するには再帰が必要です。辞書のオブジェクトのような機能を実現するアプローチは次のとおりです。
class Struct: def __init__(self, **entries): self.__dict__.update(entries)
使用法:
args = {'a': 1, 'b': 2} s = Struct(**args) s.a 1 s.b 2
代替ソリューション: Namedtuples
Python の場合バージョン 2.6 以降では、namedtuple データ構造の利用を検討してください。
from collections import namedtuple MyStruct = namedtuple('MyStruct', 'a b d') s = MyStruct(a=1, b={'c': 2}, d=['hi'])
これで、オブジェクトのように動作し、そのフィールドに対する属性アクセスを持つ名前付きタプルが完成しました。これにより、簡潔で可読性の高いソリューションが提供されます。
以上がオブジェクトのように入れ子になった Python 辞書にアクセスするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。