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

ihack4u

我正在尝试从此示例字典中的“externalIps”键中提取所有值

{
    "a": {},
    "b": {},
    "c": {},
    "d": {
        "us-east1-b": {
            "vm1": {
                "externalIps": [
                    "1.1.1.1"
                ],
                "resourceowner": "[email protected]"
            }
        }
    },
    "e": {
        "us-east1-b": {
            "vm2": {
                "externalIps": [
                    "2.2.2.2"
                ],
                "resourceowner": "[email protected]"
            },
            "vm3": {
                "externalIps": [
                    "3.3.3.3"
                ],
                "resourceowner": "[email protected]"
            },
            "vm4": {
                "externalIps": [
                    "4.4.4.4"
                ],
                "resourceowner": "[email protected]"
            }
        }
    },
    "f": {},
    "g": {
        "us-east1-b": {
            "vm5": {
                "externalIps": [
                    "5.5.5.5"
                ],
                "resourceowner": "[email protected]"
            }
        }
    },
}

我在 linux 上使用 python 3.7.3。我尝试了很多东西,例如 "for key, value in" ,以及我在网上搜索的其他东西。鉴于到处都有不同的键,我不确定如何只引用“externalIps”键并获取其值。

我得到的最接近的是这样的东西,当我尝试转到 key5 时,它似乎效率极低并且失败了

for key1 in json_data.keys():
    for key2 in json_data[key1].keys():
        for key3 in json_data[key1][key2].keys():
            for key4 in json_data[key1][key2][key3].keys():
                print(key4)

我希望结果是这样的:

1.1.1.1,2.2.2.2,3.3.3.3,4.4.4.4,5.5.5.5

安德烈·凯斯利

您可以使用递归来完成您所需要的:

d = {
    "a": {},
    "b": {},
    "c": {},
    "d": {
        "us-east1-b": {
            "vm1": {
                "externalIps": [
                    "1.1.1.1"
                ],
                "resourceowner": "[email protected]"
            }
        }
    },
    "e": {
        "us-east1-b": {
            "vm2": {
                "externalIps": [
                    "2.2.2.2"
                ],
                "resourceowner": "[email protected]"
            },
            "vm3": {
                "externalIps": [
                    "3.3.3.3"
                ],
                "resourceowner": "[email protected]"
            },
            "vm4": {
                "externalIps": [
                    "4.4.4.4"
                ],
                "resourceowner": "[email protected]"
            }
        }
    },
    "f": {},
    "g": {
        "us-east1-b": {
            "vm5": {
                "externalIps": [
                    "5.5.5.5"
                ],
                "resourceowner": "[email protected]"
            }
        }
    },
}

def fn(d, rv):
    for k, v in d.items():
        if k == 'externalIps':
            rv.append(v[0])
        if isinstance(v, dict):
            fn(v, rv)

l = []
fn(d, rv=l)
print(l)

印刷:

['1.1.1.1', '2.2.2.2', '3.3.3.3', '4.4.4.4', '5.5.5.5']

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

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

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

Java 8从Map中的匹配值中提取所有键

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

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

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

如何在Matlab中从* 1结构的特定字段中提取所有值

如何访问特定键具有特定值的字典中的所有词典

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

从表中提取所有键和值

从字典键中的所有元组中提取特定位置

如何在PHP中从关联数组的键中提取所有最后的值?

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

如何从列表字典的值中获取所有键?

如何从PDF中提取所有值?

如何从所有与Django中的外键链接的ID中提取所有对象?

如何从没有逗号且键中没有值的字典中提取记录

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

从Python中的字典列表中提取键/值对

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

如何在列表和列中的特定键中获取所有唯一字典值?

根据特定键的值从python字典中提取键值对

如何在嵌套的python dict中提取所有数据键和值

如何从 Python 字典 (JSON) 中存在的键中的值中提取某些特定文本

从python中的字典列表中提取所有值时返回奇怪的值

在键是元组的字典中,删除在特定位置没有特定值的所有键

如何在保留所有元素的同时提取字典列表中的所有键?(蟒蛇)

如何提取对象列表中特定键中的所有值

如何从列表中的嵌套字典对象中提取选定的键和值?

如果这些字典对于特定键具有相同的值,如何从列表中提取字典

如何從字典中提取特定值?