Python 如何合并两个字典列表

Python 如何合并两个字典列表,python,dictionary,Python,Dictionary,我的第一个清单是 "networks":[ {"name": "public", "ip_ranges":[["172.16.0.2", "172.16.0.126" ] ], "id": 173,…}, {"name": "management", "ip_ranges":[["192.168.0.1", "192.168.0.254" ] ],…}, {"name": "storage", "ip_ranges":[["192.168.1.1", "192.168.1.254" ] ],…}

我的第一个清单是

"networks":[
{"name": "public", "ip_ranges":[["172.16.0.2", "172.16.0.126" ] ], "id": 173,…},
{"name": "management", "ip_ranges":[["192.168.0.1", "192.168.0.254" ] ],…},
{"name": "storage", "ip_ranges":[["192.168.1.1", "192.168.1.254" ] ],…},
{"name": "private", "ip_ranges":[["192.168.2.1", "192.168.2.254" ] ],…},
{"name": "public", "ip_ranges":[["172.16.0.2", "172.16.0.126" ] ],…},
{"name": "management", "ip_ranges":[["192.168.0.1", "192.168.0.254" ] ],…},
{"name": "storage", "ip_ranges":[["192.168.1.1", "192.168.1.254" ] ],…},
{"name": "private", "ip_ranges":[["192.168.2.1", "192.168.2.254" ] ],…},
{"name": "fuelweb_admin", "ip_ranges":[], "id": 181, "meta":{"notation": "ip_ranges",…},
{"name": "fuelweb_admin", "ip_ranges":[["10.30.0.3", "10.30.0.254" ] ], "id": 1,…}
]
第二条是这样的

 "network_conf": [

            {
                "network_name": "default",
                "public": {
                    "ip_ranges": {
                        "start": "135.21.67.150",
                        "end": "135.21.67.170"
                    },
                    "cidr": "135.21.67.128/26",
                    "gateway": "135.21.67.129",
                    "floating_ip_ranges": {
                        "start": "135.21.67.171",
                        "end": "135.21.67.180"
                    }

                },
                "storage": {
                    "ip_ranges": {
                        "start": "192.168.109.100",
                        "end": "192.168.109.200"
                    },
                    "cidr": "192.168.109.0/24"

                },
                "management": {
                    "ip_ranges": {
                        "start": "192.168.27.150",
                        "end": "192.168.27.190"
                    },
                    "cidr": "192.168.27.128/26",
                    "gateway": "192.168.27.129"

                }
            },

            {
                "network_name": "ops_test_network_0",
                "public": {
                    "ip_ranges": {
                        "start": "135.21.67.160",
                        "end": "135.21.67.170"
                    },
                    "cidr": "135.21.67.128/26",
                    "gateway": "135.21.67.129",
                    "floating_ip_ranges": {
                        "start": "135.21.67.171",
                        "end": "135.21.67.180"
                    }

                },
                "storage": {
                    "ip_ranges": {
                        "start": "192.168.109.100",
                        "end": "192.168.109.200"
                    },
                    "cidr": "192.168.109.0/24"

                },
                "management": {
                    "ip_ranges": {
                        "start": "192.168.27.150",
                        "end": "192.168.27.190"
                    },
                    "cidr": "192.168.27.128/26",
                    "gateway": "192.168.9.1"

                }
            }

    ],
我想将1个dict['name']==public的列表合并到第2个dict键“public”

更好的方法是什么, 如果有更简单的方法,可以相应地修改第二个dict
主要问题是通过键
public=>public
management=>management
,映射到不同的dict列表。。。。etc

我有两个相同长度的列表:

[1,2,3,4]
[a,b,c,d]

dict(zip([1,2,3,4], [a,b,c,d]))
如果列表很大,则应使用
itertools.izip

如果键多于值,并且要为额外的键填充值,可以使用
itertools.izip\u longest

在这里,a、b、c和d是变量——只要定义了它们,就可以正常工作,但如果希望它们作为字符串,您可能是指
['a','b','c','d']

zip
从每个iterable中提取第一项并生成一个元组,然后从每个iterable中提取第二项,以此类推


dict
可以获取一个iterable of iterable,其中每个内部iterable有两个项目–然后它使用第一个作为键,第二个作为每个项目的值。

您可以提供一个示例输出吗。不清楚结果是什么。@MikeMüller,如果您看到第二个dict实际上是包含0=>'management'>{..},“public”=>{..},“storage”=>{..}的dict列表因此,我想将dict 1st public的第一个列表中的第0个public到第1个public的第2个事件映射到第1个列表中的第2个public到第2个public,如何将此信息与一个描述性示例一起添加到问题中?