如何将列表中的字典转换为指定结构的Python字典?
如何将指定列表转换为目标字典结构(Python)?
需求说明
输入列表(Python中字典键值需为合法格式,以下修正为字符串形式):
[ {'A': 'a', 'B': 'b', 'C': 'c'}, {'D': 'd', 'E': 'e', 'F': 'f'} ]
目标字典结构:
{ 'A': {'A': 'a', 'B': 'b', 'C': 'c'}, 'D': {'D': 'd', 'E': 'e', 'F': 'f'} }
实现方法
方法1:循环遍历(直观易懂)
遍历原列表的每个子字典,提取子字典的第一个键作为新字典的键,子字典本身作为对应值:
original_list = [ {'A': 'a', 'B': 'b', 'C': 'c'}, {'D': 'd', 'E': 'e', 'F': 'f'} ] result_dict = {} for item in original_list: # 取子字典的第一个键(Python 3.7+字典有序,按插入顺序获取) first_key = next(iter(item.keys())) result_dict[first_key] = item print(result_dict)
方法2:字典推导式(简洁高效)
用一行代码完成转换,逻辑与循环遍历一致:
original_list = [ {'A': 'a', 'B': 'b', 'C': 'c'}, {'D': 'd', 'E': 'e', 'F': 'f'} ] result_dict = {next(iter(item.keys())): item for item in original_list} print(result_dict)
注意事项
- 字典有序性:Python 3.7及以上版本中,字典默认保留插入顺序,因此
next(iter(item.keys()))能稳定获取子字典的第一个键。若使用低于3.7的版本,字典无序,需确保每个子字典中存在唯一的目标键(如示例中的'A'、'D'),可通过键的特征筛选。 - 空字典处理:如果原列表中可能存在空字典,需添加非空判断避免报错:
# 循环方式 result_dict = {} for item in original_list: if item: first_key = next(iter(item.keys())) result_dict[first_key] = item # 推导式方式 result_dict = {next(iter(item.keys())): item for item in original_list if item}
内容的提问来源于stack exchange,提问作者vrushabh fasgee
相关产品推荐
相关产品推荐

