ホームページ >バックエンド開発 >Python チュートリアル >オブジェクトのように入れ子になった Python 辞書にアクセスするにはどうすればよいですか?

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

Mary-Kate Olsen
Mary-Kate Olsenオリジナル
2024-11-11 04:51:03748ブラウズ

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

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。