Python组合字典



我有两个dict。dict中的元素按顺序排列。

[{'macaddress': 'xx:xx:xx:xx:xx:xx'}, {'macaddress': 'cc:cc:cc:cc:cc:cc'}]
[{'ipaddress': '192.168.1.1'}, {'ipaddress': '192.168.1.2'}]

我想把它们组合起来,如下所示;

[
{
'macaddress': 'xx:xx:xx:xx:xx:xx', 
'ipaddress': '192.168.1.1'
}, 
{ 
'macaddress': 'cc:cc:cc:cc:cc:cc', 
'ipaddress': '192.168.1.2'
}
]

我该怎么做?谢谢

假设l1l2是两个列表,则可以使用zip和带有字典扩展的列表理解:

l1 = [{'macaddress': 'xx:xx:xx:xx:xx:xx'}, {'macaddress': 'cc:cc:cc:cc:cc:cc'}]
l2 = [{'ipaddress': '192.168.1.1'}, {'ipaddress': '192.168.1.2'}]
out = [{**d1, **d2} for d1, d2 in zip(l1, l2)]

输出:

[{'macaddress': 'xx:xx:xx:xx:xx:xx', 'ipaddress': '192.168.1.1'},
{'macaddress': 'cc:cc:cc:cc:cc:cc', 'ipaddress': '192.168.1.2'}]

对于python 3.9+,您可以在两个dict之间使用|运算符:

macs = [{'macaddress': 'xx:xx:xx:xx:xx:xx'}, {'macaddress': 'cc:cc:cc:cc:cc:cc'}]
ips = [{'ipaddress': '192.168.1.1'}, {'ipaddress': '192.168.1.2'}]
output = [mac | ip for mac, ip in zip(macs, ips)]
print(output)
# [{'macaddress': 'xx:xx:xx:xx:xx:xx', 'ipaddress': '192.168.1.1'}, {'macaddress': 'cc:cc:cc:cc:cc:cc', 'ipaddress': '192.168.1.2'}]

更新

请忽略此解决方案,因为它不正确。

解决方案

你的问题实际上是问如何合并两个不同的列表。您可以通过以下操作简单地合并它们:

a = [{'macaddress': 'xx:xx:xx:xx:xx:xx'}, {'macaddress': 'cc:cc:cc:cc:cc:cc'}]
b = [{'ipaddress': '192.168.1.1'}, {'ipaddress': '192.168.1.2'}]
c = a + b

但是,有许多方法可以合并列表。有关更多信息,请查看此列表中的八种不同的列表合并方式。

最新更新