Python中嵌套列表转字典:实现指定格式转换求助
完善代码实现嵌套列表转目标字典
嘿,我来帮你把代码补全并优化一下,刚好能实现你想要的字典格式!先看看最终的完整代码,再给你拆解关键逻辑:
result = [[450, 455, 458], [452, 454, 456, 457], [451, 453]] result_group = {} # 用enumerate同时获取外层字典的键(分组序号)和对应的子列表 for group_count, sub_group in enumerate(result): # 拿到当前子列表的第一个元素,作为后续元素的关联值 first_item = sub_group[0] # 初始化当前分组的字典,第一个元素对应None group_dict = {first_item: None} # 遍历子列表中除第一个外的其他元素,统一关联到第一个元素 for item in sub_group[1:]: group_dict[item] = first_item # 将当前分组字典加入外层字典 result_group[group_count] = group_dict print(result_group)
运行这段代码后,输出就是你想要的格式:
{0: {450: None, 455: 450, 458: 450}, 1: {452: None, 454: 452, 456: 452, 457: 452}, 2: {451: None, 453: 451}}
关键逻辑拆解:
- 使用
enumerate(result)可以同时获取**外层字典的键(也就是分组序号0、1、2)**和对应的子列表,避免手动维护group_count的递增,代码更简洁不易出错。 - 先提取子列表的第一个元素
first_item,直接给它赋值None作为初始键值对,符合你的需求规则。 - 遍历子列表中从第二个元素开始的所有项,统一把它们的值设为
first_item,完美匹配你要的关联逻辑。
如果你偏爱更紧凑的写法,还可以用字典推导式一行搞定内层字典:
result_group = { idx: {item: (None if item == sub[0] else sub[0]) for item in sub} for idx, sub in enumerate(result) }
这种写法和上面的循环效果完全一致,看你个人习惯选择就行~
内容的提问来源于stack exchange,提问作者Krish V
相关产品推荐
相关产品推荐

