You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.20 11:19:53