首页 > 解决方案 > 在循环内循环嵌套字典

问题描述

所以我找到了这两个资源:迭代字典列表嵌套字典理解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)

标签: pythondictionary

解决方案


如果你想要一个只会得到的函数,{"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

推荐阅读