如何将Python嵌套列表转换为字典列表,首子列表作为各字典的键
解决方法
Python 中可以直接用zip()函数将表头和每行的值一一映射,结合列表推导式即可快速生成目标字典列表。
完整实现代码
a = [['PORT', 'NAME', 'STATUS', 'VLAN', 'DUPLEX', 'SPEED', 'TYPE', 'FC_MODE'], ['Gi1/0/1', 'S1-P1-01 Cisco_Roo', 'connected', '248', 'a-full', 'a-1000', '10/100/1000BaseTX', ''], ['Gi1/0/2', '', 'notconnect', '121', 'auto', 'auto', '10/100/1000BaseTX', ''], ['Gi1/0/3', '', 'notconnect', '121', 'auto', 'auto', '10/100/1000BaseTX', '']] # 提取第一行作为字典的键列表 keys = a[0] # 遍历后续所有行,和表头配对生成字典 result = [dict(zip(keys, row)) for row in a[1:]] print(result)
输出结果
[ {'PORT': 'Gi1/0/1', 'NAME': 'S1-P1-01 Cisco_Roo', 'STATUS': 'connected', 'VLAN': '248', 'DUPLEX': 'a-full', 'SPEED': 'a-1000', 'TYPE': '10/100/1000BaseTX', 'FC_MODE': ''}, {'PORT': 'Gi1/0/2', 'NAME': '', 'STATUS': 'notconnect', 'VLAN': '121', 'DUPLEX': 'auto', 'SPEED': 'auto', 'TYPE': '10/100/1000BaseTX', 'FC_MODE': ''}, {'PORT': 'Gi1/0/3', 'NAME': '', 'STATUS': 'notconnect', 'VLAN': '121', 'DUPLEX': 'auto', 'SPEED': 'auto', 'TYPE': '10/100/1000BaseTX', 'FC_MODE': ''} ]
逻辑说明
zip(keys, row)会将表头列表和当前行的列表按位置一一配对,返回可迭代的元组对序列dict()可直接将配对的元组序列转换为键值对字典- 列表推导式遍历
a[1:]中所有数据行,批量生成所有字典组成最终列表
注意事项
如果实际数据存在行长度和表头长度不一致的情况,可先按需补全空值再执行转换,避免出现字段遗漏。
内容的提问来源于stack exchange,提问作者Dover
相关产品推荐
相关产品推荐

