如何从嵌入式字典/列表中提取所有值

Buydadip

假设我们有以下...

pract={
  "hello": {
    "more": 1,
    "some": 2,
    "yes": [
      {
        "dicct": 1
      },
      {
        "more_dict": 4
      }
    ]
  }
}

我有一个嵌入式的dict/list我需要获取所有单个值。因此,在这种情况下,我的结果将是...

[1, 2, 1, 4]

理想情况下,我想保留直系父母,这样会更好...

[("more",1), ("some",2), ("dicct", 1), ("more_dict", 4)]

这是我的递归尝试...

def grab_children(father, result):
    if type(father) == type([]):
        for e in father:
            if isinstance(e, dict):
                grab_children(e, result)
    else:
        for child_key, child_value in father.items():
            if isinstance(child_value, dict):
                grab_children(child_value, result)
            else:
                result.append((child_key, child_value))

我这样跑...

child = []
grab_children(pract, child)

但是当我打印子数组时,我得到...

[('more', 1), ('some', 2), ('yes', [{'dicct': 1}, {'more_dict': 4}])]

显然不是我想要的输出。我的解决方案出了什么问题?

斯蒂芬·劳奇

一个发电机非常适用于这种事情:

码:

def get_terminal_nodes(data):
    if isinstance(data, list):
        for item in data:
            for i in get_terminal_nodes(item):
                yield i

    elif isinstance(data, dict):
        for k, item in data.items():
            if isinstance(item, (list, dict)):
                for i in get_terminal_nodes(item):
                    yield i
            else:
                yield k, item

测试代码:

pract = {
    "hello": {
        "more": 1,
        "some": 2,
        "yes": [{"dicct": 1}, {"more_dict": 4}]}
}

flat_data = dict(get_terminal_nodes(pract))
print(flat_data)

结果:

{'more': 1, 'some': 2, 'dicct': 1, 'more_dict': 4}

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何从字典列表中提取特定键的所有值?

如何从SVG文件中提取嵌入式图像?

如何从Wix刻录安装程序中提取嵌入式有效负载?

如何从具有嵌入式null的字符数组中提取std :: string

如何从Python中的字典中提取所有值?

如何从Python中的字典中提取所有值?

如何从字典中的特定键中提取所有值?

在JSOUP中提取到嵌入式资源的链接的最有效方法

如何在mongoDB中的嵌入式文档中提取特定元素

如何从三星的Motion Photo jpeg文件中提取嵌入式视频

如何从 python 字典中的列表中提取键的所有实例?

使用Java从文档中提取嵌入式文件

从嵌入式Google地图中提取标记坐标

从html中的嵌入式脚本标签中提取数据

如何从PDF中提取所有值?

如何从python字典列表中提取重复的键和值?

如何从python中的字典中的列表中提取特定值?

从R列表中的所有嵌入式列表中删除元素

如何在python eve中为嵌入式字典列表建模

包含(嵌入式)列表理解的字典理解

如何从带有嵌入式子集字体的pdf中提取文本

如何从嵌套列表中提取所有子列表?

提取嵌入式initramfs

使用ffmpeg从具有嵌入式封面的文件中提取视频封面/缩略图

使用BeautifulSoup提取带有嵌入式链接的文本

如何从字典列表中提取值

如何计算按嵌入式列表分组的列表项

没有从字典中提取数字的值

如何打开(并保存)Word文档中的所有嵌入式文档?