求助:如何将Python字典列表转换为键对应值列表的字典
Python字典列表转置为键值列表字典
问题描述
输入字典列表:
a = [{'Name': 'dhaya', 'Place': 'pune', 'Designation': 'fleetEngineer'},{'Name': 'rishi', 'Place': 'maharastra', 'Designation': 'Sr.Manager'}]
期望输出:
{"Name":["dhaya","rishi"],"Place":["pune","maharastra"],"Designation":["fleetEngineer","Sr.Manager"]}
解法1:手动遍历构建
适用于所有字典键一致的场景,逻辑直观:
a = [{'Name': 'dhaya', 'Place': 'pune', 'Designation': 'fleetEngineer'},{'Name': 'rishi', 'Place': 'maharastra', 'Designation': 'Sr.Manager'}] result = {} # 提取第一个字典的所有键(假设所有字典键相同) for key in a[0].keys(): # 遍历每个字典,收集当前键对应的值 result[key] = [item[key] for item in a] print(result)
解法2:用zip()和字典推导式
利用Python内置函数简化代码,效率较高:
a = [{'Name': 'dhaya', 'Place': 'pune', 'Designation': 'fleetEngineer'},{'Name': 'rishi', 'Place': 'maharastra', 'Designation': 'Sr.Manager'}] # 打包所有字典的对应值,再与键配对 keys = a[0].keys() result = {k: list(v) for k, v in zip(keys, zip(*(d.values() for d in a)))} print(result)
解法3:collections.defaultdict处理键不一致场景
如果列表中字典的键可能不统一,这个方法会自动为每个键创建列表并收集值:
from collections import defaultdict a = [{'Name': 'dhaya', 'Place': 'pune', 'Designation': 'fleetEngineer'},{'Name': 'rishi', 'Place': 'maharastra', 'Designation': 'Sr.Manager'}] result = defaultdict(list) for item in a: for key, val in item.items(): result[key].append(val) # 可选:转换为普通字典 result = dict(result) print(result)
内容的提问来源于stack exchange,提问作者anand
相关产品推荐
相关产品推荐

