Python
 Computer >> コンピューター >  >> プログラミング >> Python

Pythonでキーのリストを使ってネストされた辞書(dict)の値にアクセスする方法

Pythonの辞書(dict)からネストされたプロパティへアクセスする最もシンプルで読みやすい方法は、forループを使ってキーのリストを先頭から順にたどり、その都度次の値を取得していくことです。リスト内のすべてのキーを処理し終えた時点で、目的の値が手に入ります。

コード例:forループを使う方法

以下の関数 getFromDict は、辞書本体とキーのリストを受け取り、ループで段階的に値を取り出します。

def getFromDict(dataDict, mapList):
    for k in mapList:
        dataDict = dataDict[k]
    return dataDict

a = {
    'foo': 45,
    'bar': {
        'baz': 100,
        'tru': "Hello"
    }
}

print(getFromDict(a, ["bar", "baz"]))

この例では、外側の辞書 a の中にある bar キーでネストされた辞書を取得し、さらにその中の baz キーの値を取り出しています。

出力

上記のコードを実行すると、次の出力が得られます。

100

別の方法:functools.reduce を使う

より簡潔に書きたい場合は、標準ライブラリの functools.reduceoperator.getitem を組み合わせる方法もあります。

from functools import reduce
import operator

def getFromDict(dataDict, mapList):
    return reduce(operator.getitem, mapList, dataDict)

print(getFromDict(a, ["bar", "baz"]))  # 100

どちらの方法でも結果は同じですが、初心者には forループ版の方が処理の流れが分かりやすくおすすめです。なお、存在しないキーを指定すると KeyError が発生するため、必要に応じて例外処理や .get() メソッドとの併用を検討してください。

  1. Pythonで辞書をキー順に並べ替える方法【OrderedDictとsorted()の使い方】

    Pythonで辞書(dict)の要素をキーの順序に従って並べ替えたい場面はよくあります。この記事では、標準ライブラリのcollectionsモジュールに含まれるOrderedDictと、組み込み関数sorted()を組み合わせて、辞書をキー順にソートする方法を解説します。 OrderedDictとは Pythonの標準ディストリビューションには、高性能なコンテナデータ型を定義したcollectionsモジュールが含まれています。その中のOrderedDictは、辞書のサブクラスであり、要素が追加された順序を記憶する特徴を持っています。OrderedDictをイテレートすると、キーが最初に追加さ

  2. Pythonで辞書(dict)のすべてのキーを取得・表示する方法

    Pythonでは、辞書(dict)オブジェクトが持つ keys() メソッドを使うことで、すべてのキーを簡単に取得できます。このメソッドは辞書内の全キーを含むビューオブジェクト(dict_keys)を返します。 keys() メソッドでキーを取得する まずは基本的な使い方を見てみましょう。次の例では、3つのキーと値を持つ辞書から、すべてのキーを取り出しています。 >>> D1 = {1:a, 2:b, 3:c} >>> D1.keys() dict_keys([1, 2, 3]) >>> list(D1.keys()) [1, 2, 3]