Python如何按顺序合并两个分别存储MAC、IP的字典列表
按位置合并两个对应顺序的字典列表
实现思路
两个列表元素顺序一一对应,只需要逐位取出同索引的MAC字典、IP字典,将两个字典的键值对合并为一个新字典,最终收集所有新字典组成结果列表即可。
可直接运行的代码示例
# 定义原始两个列表 mac_list = [{'macaddress': 'xx:xx:xx:xx:xx:xx'}, {'macaddress': 'cc:cc:cc:cc:cc:cc'}] ip_list = [{'ipaddress': '192.168.1.1'}, {'ipaddress': '192.168.1.2'}] # 列表推导式+zip配对+字典解包合并 result = [{**mac, **ip} for mac, ip in zip(mac_list, ip_list)]
运行结果
执行后result的输出和预期结构完全一致:
[ { 'macaddress': 'xx:xx:xx:xx:xx:xx', 'ipaddress': '192.168.1.1' }, { 'macaddress': 'cc:cc:cc:cc:cc:cc', 'ipaddress': '192.168.1.2' } ]
补充说明
- 该写法默认两个列表长度相等,
zip()会以较短的列表长度为准做截断。如果需要严格校验两列表长度一致,可以在合并前加判断if len(mac_list) != len(ip_list)抛出异常,避免漏数据。 - Python 3.9+ 版本支持更简洁的字典合并运算符写法,合并逻辑可以替换为
result = [mac | ip for mac, ip in zip(mac_list, ip_list)],运行效果完全相同。 - 若同位置的两个字典存在重复键,靠后的IP字典对应值会覆盖MAC字典的同键值,本场景下两个列表的字典键无冲突,不存在覆盖问题。
内容的提问来源于stack exchange,提问作者phythonnewbee
相关产品推荐
相关产品推荐

