python - 在循环内循环嵌套字典
问题描述
所以我找到了这两个资源:迭代字典列表和嵌套字典理解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)
解决方案
如果你想要一个只会得到的函数,{"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
推荐阅读
- reactjs - 如何更改 Material UI 抽屉的边框颜色?
- rust - 使用 Serde 进行序列化时,有没有办法对结构的字段进行分组,例如“flatten”属性的反转?
- python - xlwings 持久化 Python 对象
- javascript - 当它是一个单独的 .js 文件时,无法让 JavaScript 在 HTML 网页中工作
- c++ - 调用模板提供的(静态)函数
- python - 从几个文件中拆分相同值文本的好方法
- python - 警告:未找到 BLAS 库,Qiskit 安装
- html - 调整手风琴
- python - Matplotlib 注释/文本:如何分别为 facecolor 和 edgecolor 设置 alpha 透明度?
- android - Kotlin Room Coroutines Codelab 问题(初学者)