ホームページ >バックエンド開発 >Python チュートリアル >キーのリストを使用して、Python でネストされた辞書アイテムに効率的にアクセスして更新するにはどうすればよいですか?

キーのリストを使用して、Python でネストされた辞書アイテムに効率的にアクセスして更新するにはどうすればよいですか?

DDD
DDDオリジナル
2024-12-27 02:53:08458ブラウズ

How Can I Efficiently Access and Update Nested Dictionary Items in Python Using a List of Keys?

キーのリストを使用したネストされた辞書項目へのアクセス

ネストされた辞書構造へのアクセスは、Python プログラミングの一般的なタスクです。ここでは、キーのリストを使用して複雑な辞書内のデータを取得および変更するための、提供されたコードよりも効率的なアプローチを検討します。

拡張トラバーサルでのreduce()の使用

reduce() 関数は、単一の操作を適用することで一連の値を変換するための強力なツールです。この場合、これを使用して辞書構造をトラバースし、キーのリストを 1 つの値に減らすことができます。各反復で次の辞書レベルを取得する操作として、operator.getitem メソッドが使用されます。

from functools import reduce  # forward compatibility for Python 3
import operator

def get_from_dict(data_dict, map_list):
    return reduce(operator.getitem, map_list, data_dict)

reduce() と Operator.setitem によるデータの更新

ネストされた辞書の値を更新するには、get_from_dict を再利用して親辞書を取得し、operator.setitem メソッドを使用してvalue.

def set_in_dict(data_dict, map_list, value):
    get_from_dict(data_dict, map_list[:-1])[map_list[-1]] = value

使用例

コードをテストしてみましょう:

data_dict = {
    "a": {
        "r": 1,
        "s": 2,
        "t": 3
        },
    "b": {
        "u": 1,
        "v": {
            "x": 1,
            "y": 2,
            "z": 3
            },
        "w": 3
        }
    }    

map_list = ["a", "r"]
print(get_from_dict(data_dict, map_list))  # Output: 1

map_list = ["b", "v", "y"]
print(get_from_dict(data_dict, map_list))  # Output: 2

map_list = ["b", "v", "w"]
set_in_dict(data_dict, map_list, 4)
print(data_dict)  # Updated dictionary with "w": 4

この強化されたアプローチは、reduce() などの強力な Python 関数を利用します。およびoperator.getitemを使用して、ネストされた辞書操作を効率的に実行し、コードをよりクリーンかつ効率的にします。

以上がキーのリストを使用して、Python でネストされた辞書アイテムに効率的にアクセスして更新するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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