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,如何将此信息与一个描述性示例一起添加到问题中?