0

我有一个字典列表。例如:

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

每个字典中的一个键值对是另一个字典。前任

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"]

请注意,list1正如list2您定义的那样,它们是字典,而不是列表 - 的值"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 回答