所以我找到了这两个资源:Iterating over list of dictionaries 和 Nested dictionary comprehension python
但我是 Python 新手,无法理解不同结构中的嵌套结构(列表中的嵌套字典,或字典中的嵌套列表。
例如,如果我试图在相机中获取字典(因此“color”:“black”,“res”:16 的关键项对,然后将其附加到列表中。
非常感谢!
*updating below to append to a list.
nested_lst3 = [{"camera":{"color": "black", "res": 16}, "phone":1}, {"car":{"amount": 1, "year": 2017, "color": "red"}, "van":0}]
def get_values(d):
for i in d:
for key in d[i]:
l.append(key)
return(l)
#or this
def get_values(d):
for i in d:
for key, values in d[i]:
if type(values) is dict:
get_values(values)
else:
print(key, ":", value)
get_values(nested_lst3)
答案 0 :(得分:1)
如果你想要一个只能得到 {"color":"black", "res":16}
的函数,那么你可以这样做:
def get_values(d):
s = {}
for i in range(len(d)):
temp = d[i]
s = temp[list(temp.keys())[0]]
break
return s
它的作用是遍历嵌套列表变量。因为您需要有一个键才能访问字典中的值,所以您可以在列表中一个接一个,然后在每次迭代时取第一个键,`temp = d[i]'
在这种方法中,假设我们已经知道字典中的第一个值将是另一个字典。所以我们只取键,(list(temp.keys())[0]
列出字典中存在的键),然后取第一个。
我添加了一个 break
语句,因为您只想要第一个嵌套字典,但是如果您要取出 break
,它将检索每个嵌套字典(假设它们都位于第一个嵌套字典的值位置。
编辑:
如果你希望它返回一个包含字典的数组:
def get_values(d):
s = []
for i in range(len(d)):
temp = d[i]
s.append(temp[list(temp.keys())[0]])
break
return s