我有两个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'
}
]
我该怎么做?谢谢
假设l1
和l2
是两个列表,则可以使用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
但是,有许多方法可以合并列表。有关更多信息,请查看此列表中的八种不同的列表合并方式。