0

私は辞書のリストを持っています。例えば:

list = [ {list1}, {list2}, .... ]

各ディクショナリのキーと値のペアの 1 つは別のディクショナリです。元

list1 = { "key1":"val11", "key2":"val12", "key3":{"inkey11":"inval11","inkey12":"inval12"} }
list2 = { "key1":"val21", "key2":"val22", "key3":{"inkey21":"inval21","inkey22":"inval22"} }

key3すべての辞書のすべての値をリストに入れることを考えていました。それらに直接アクセスすることは可能ですか (のようなものlist[]["key3"])、またはリストを形成するためにすべての要素を反復処理する必要がありますか?

私が試してみました

必須リスト = リスト [ ] ["key3"].

しかし、うまくいきません。私が望んでいた最終結果は

requiredlist = [ {"inkey11":"inval11","inkey12":"inval12"}, {"inkey21":"inval21","inkey22":"inval22"} ]

4

3 に答える 3

3

ここでは、リスト内包表記がうまく機能すると思います。

[innerdict["key3"] for innerdict in list]
于 2013-08-15T01:10:09.500 に答える
1

これを試して:

list1["key3"]

list1andlist2を定義したように、それらはリストではなく辞書であり、 の値はリストで"key3"はなくsetであることに注意してください。と混同{}[]ていますが、意味が異なります。

于 2013-08-15T01:10:26.740 に答える
0

要素がディクショナリであることにアクセスするには、次の手順を実行する必要があります。

dict_name[key_name] #in this case: list1[key3]

これを試して:

newlist = []
list = [{ "key1":"val11", "key2":"val12", "key3":{dict1} },{ "key1":"val21", "key2":"val22", "key3":{dict1} }]
for innerdict in list:
    newlist += list(innerdict["key3"]) 
print newlist #This will give all the values of key3 in all the dictionaries

リスト内がセットの場合dict1、上記の例はうまく機能しますが、辞書の場合はリストが表示されますが、キーのみが含まれるため、辞書の場合はこれを試してください:

newlist = []
list = [{ "key1":"val11", "key2":"val12", "key3":{dict1} },{ "key1":"val21", "key2":"val22", "key3":{dict1} }]
for innerdict in list:
    newlist.append(innerdict["key3"]) 
print newlist #This will give all the values of key3 in all the dictionaries
于 2013-08-15T01:29:07.503 に答える