2016-10-23 21 views
-1

いくつかの辞書を設定して物事を整理するためにいくつかの関数が定義されています。私が今やろうとしているのは、ネストした辞書を別の関数の関数パラメータとして使用することです。辞書内の辞書内のキーへのアクセス

Kは、私はこのフォーマットを入力した:

list = {'123': {'Name': 'foo', 'Responses': {'Q4': 'a', 'Q1': 'a', 'Q2': 'b', 'Q3': 'c'}, 'ID': '123'}, '234': {'Name': 'bar', 'Responses': {'Q4': 'b', 'Q1': 'a', 'Q2': 'b', 'Q3': 'c'}, 'ID': '234'}, '345': {'Name': 'xyzzy', 'Responses': {'Q4': 'b', 'Q1': 'a', 'Q2': 'a', 'Q3': 'c'}, 'ID': '345'}} 

私は機能がQ1、Q2などのキーを使用して別のdictionartに比較できるように、「応答」キーにアクセスする必要があります。そして、私は123、234、345のキーごとにこれを行う必要があります。 それほど重要ではありませんが、関数が与えたリストの値をキーのキーにマップする必要がありますが、この関数を実行すると、それを理解することができます。

私はパラメータとしてlist.get( 'Responses')を使用しようとしましたが、Noneを返すので、ここからどこに行くのかはわかりません。

答えて

0

.get()パラメータは、最上位のキーを検索します。あなたが実際におそらく欲しいのは、サブレベルの辞書の上に一覧表示することです:

for key, sub_dict in toplevel_dict.items(): 
    responses = sub_dict['Responses'] 
    # do something with responses here; responses is a dict 
0

次のように、リストの内包表記を使用して行うことができます。

l = [dic['Responses'] for _, dic in list.items()] 
# You get a list of all your dictionaries 
0

あなたがにiteritemsでforループを使用する必要があります情報を引き出します。

for key, value in list.iteritems(): 
    print value['Responses']