オブジェクトのように入れ子になった Python 辞書にアクセスするにはどうすればよいですか?

Mary-Kate Olsen
リリース: 2024-11-11 04:51:03
オリジナル
739 人が閲覧しました

How to Access Nested Python Dictionaries Like Objects?

ネストされた 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 サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート