キー リストを介したネストされた辞書項目へのアクセス: ネストされた構造の探索
辞書のような複雑なデータ構造には、多くの場合、トラバースして操作するための効率的な方法が必要です。ネストされたコンテンツ。一般的な課題の 1 つは、指定されたキーのリストに基づいて、ネストされた構造内の特定の項目にアクセスすることです。
既存のアプローチ
これに対処する 1 つの方法は、辞書を使用し、リスト内の各キーを使用して目的の項目を見つけます。ただし、このアプローチは、深くネストされた構造では冗長になり、エラーが発生しやすくなります。
Reduce を使用した改善されたソリューション
よりエレガントで効率的なソリューションには、Python の Reduce を活用することが含まれます。 () 関数。 reduce() は、指定された操作を要素のシーケンスに繰り返し適用し、シーケンスを単一の値に削減します。 Operator.getitem を操作として利用することで、リスト内の各キーを使用して辞書を走査し、関連付けられた値を取得できます。
from functools import reduce # forward compatibility for Python 3 import operator def get_from_dict(dataDict, mapList): return reduce(operator.getitem, mapList, dataDict)
値の設定
同じ原則を辞書内の値の変更にも適用できます。 get_from_dict を使用して親辞書と最終キーを見つけることで、新しい値を直接割り当てることができます。
def set_in_dict(dataDict, mapList, value): get_from_dict(dataDict, mapList[:-1])[mapList[-1]] = value
追加関数
コア機能の拡張、ネストされた構造を削除および操作するための追加関数を作成できます。たとえば、キーを削除する関数:
def del_by_path(root, items): del get_from_path(root, items[:-1])[items[-1]]
完全な例
コードの完全なデモは次のとおりです:
dataDict = { "a": { "r": 1, "s": 2, "t": 3 }, "b": { "u": 1, "v": { "x": 1, "y": 2, "z": 3 }, "w": 3 } } maplist = ["a", "r"] print(get_from_dict(dataDict, maplist)) # Output: 1 maplist = ["b", "v", "y"] print(get_from_dict(dataDict, maplist)) # Output: 2 set_in_dict(dataDict, ["b", "v", "w"], 4) print(dataDict) # Output: {'a': {'r': 1, 's': 2, 't': 3}, 'b': {'u': 1, 'v': {'w': 4, 'x': 1, 'y': 2, 'z': 3}, 'w': 3}}
この改善されたアプローチは、キーのリストを使用して複雑なネストされた辞書構造をナビゲートおよび変更するための簡潔で効率的な方法を提供し、柔軟性とコードを提供します。読みやすさ。
以上がPython でキー リストを使用して、ネストされた辞書アイテムに効率的にアクセスし、変更するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。