キーのリストを使用したネストされた辞書項目へのアクセス
ネストされた辞書構造へのアクセスは、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 サイトの他の関連記事を参照してください。