在嵌套字典中获取所有项的所有父键

问题描述 投票:1回答:1

我想获得无限级嵌套python字典中所有项目的所有父键。打个比方,如果您将嵌套字典视为包含子目录的目录,则我想要的行为类似于glob.glob(dir, recursive=True)的行为。

例如,假设我们有以下字典:

sample_dict = {
  "key_1": {
    "sub_key_1": 1,
    "sub_key_2": 2,
  },
  "key_2": {
    "sub_key_1": 3,
    "sub_key_2": {
      "sub_sub_key_1": 4,
    },
  },
}

我想获取字典中每个值的完整“路径”:

["key_1", "sub_key_1", 1]
["key_1", "sub_key_2", 2]
["key_2", "sub_key_1", 3]
["key_2", "sub_key_2", "sub_sub_key_1", 4]

只是想知道是否有一种干净的方法?

python python-3.x glob
1个回答
0
投票

您可以递归解决

sample_dict = {
  "key_1": {
    "sub_key_1": 1,
    "sub_key_2": 2,
  },
  "key_2": {
    "sub_key_1": 3,
    "sub_key_2": {
      "sub_sub_key_1": 4,
    },
  }
}

def full_paths(sample_dict, paths=[], parent_keys=[]):
    for key in sample_dict.keys():
        if type(sample_dict[key]) is dict:
            full_paths(sample_dict[key], paths=paths, parent_keys=(parent_keys + [key]))
        else:
            paths.append(parent_keys + [key] + [sample_dict[key]])
    return paths

print(full_paths(sample_dict))
© www.soinside.com 2019 - 2024. All rights reserved.