从字典列表中的字典键中获取列表

时间:2013-08-15 01:07:54

标签: python

我有一个词典列表。 e.g:

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"])或者我们是否需要遍历所有元素以形成列表?

我试过了

  

requiredlist = list [] [“key3”]。

但它不起作用。 我想要的最终结果是

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

3 个答案:

答案 0 :(得分:3)

我认为list comprehension在这里效果很好:

[innerdict["key3"] for innerdict in list]

答案 1 :(得分:1)

试试这个:

list1["key3"]

请注意,您定义的list1list2是词典,而不是列表 - "key3"的值是,而不是列表。你将{}[]混为一谈,它们有不同的含义。

答案 2 :(得分: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