ホームページ >バックエンド開発 >Python チュートリアル >キーのリストを使用して、ネストされた Python ディクショナリ内のデータに効率的にアクセスし、変更するにはどうすればよいですか?
問題:
どのようにすれば、効率的にデータにアクセスして操作できるでしょうかのリストを使用した深くネストされた辞書構造キー?
解決策:
ネイティブ Python 関数 functools.reduce を利用すると、単一の関数で辞書を効率的に走査できます。 pass.
実装:
from functools import reduce import operator def get_by_path(root, items): """Access a nested object in root by item sequence.""" return reduce(operator.getitem, items, root)
使用法:
指定されたパスの値を取得するには、次を使用します。 get_by_path:
dataDict = { "a": { "r": 1, "s": 2, "t": 3 }, "b": { "u": 1, "v": { "x": 1, "y": 2, "z": 3 }, "w": 3 } } maplist = ["a", "r"] value = get_by_path(dataDict, maplist) # 1
値の設定:
特定のパスに値を設定するには、get_by_path を再利用して親辞書を見つけ、値を辞書に割り当てることができます。望ましいキー:
def set_by_path(root, items, value): """Set a value in a nested object in root by item sequence.""" get_by_path(root, items[:-1])[items[-1]] = value
使用法:
maplist = ["b", "v", "w"] set_by_path(dataDict, maplist, 4)
追加機能:
完全を期すために、次のように定義することもできます。ネストされた辞書内のキーと値のペアを削除する関数:
def del_by_path(root, items): """Delete a key-value in a nested object in root by item sequence.""" del get_by_path(root, items[:-1])[items[-1]]
以上がキーのリストを使用して、ネストされた Python ディクショナリ内のデータに効率的にアクセスし、変更するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。