41

私はPythonを初めて使用し、問題を解決するのに助けが必要です:

私は次のような辞書を持っています

tmpDict = {'ONE':{'TWO':{'THREE':10}}}

THREE の値にアクセスする方法はありますか?

tmpDict['ONE']['TWO']['THREE']

?

4

5 に答える 5

35

Python ではいつものように、もちろんいくつかの方法がありますが、明らかな方法が 1 つあります。

tmpdict["ONE"]["TWO"]["THREE"] それを行うための明白な方法です。

それがアルゴリズムにうまく適合しない場合、それはあなたの構造が問題に最適ではないというヒントかもしれません。

繰り返し入力する手間を省きたいだけなら、もちろん dict のサブセットに別名を付けることができます:

>>> two_dict = tmpdict['ONE']['TWO'] # now you can just write two_dict for tmpdict['ONE']['TWO']
>>> two_dict["spam"] = 23
>>> tmpdict
{'ONE': {'TWO': {'THREE': 10, 'spam': 23}}}
于 2012-05-01T15:15:27.220 に答える
13

各dictでget()を使用できます。アクセスごとにNoneチェックを追加したことを確認してください。

于 2012-05-01T15:10:53.203 に答える
3

いいえ、それらはネストされた辞書であるため、それが唯一の実際の方法です (使用できますget()が、本質的には同じです)。ただし、代替手段があります。辞書をネストする代わりに、代わりにタプルをキーとして使用できます。

tempDict = {("ONE", "TWO", "THREE"): 10}
tempDict["ONE", "TWO", "THREE"]

これには欠点があります"TWO"。たとえば、すべての要素を取得する (簡単で高速な) 方法はありませんが、それが問題にならない場合は、これが良い解決策になる可能性があります。

于 2012-05-01T15:06:37.047 に答える