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

Python如何按指定格式将嵌套字典转换为目标字典列表

问题根因

你的代码运行结果不符合预期,核心是两个逻辑错误:

  • 字典c定义在所有循环的外层,整个执行过程中只创建了1个字典实例,后续所有赋值操作都是修改这同一个字典对象。列表l里两次追加的都是这个字典的引用,最终所有元素都会显示最后一次赋值的结果。
  • 循环层级顺序错误:你先遍历外层字典的键(a、b),再遍历内层索引,没有按照内层的公共索引(0、1)分组生成独立字典,自然无法得到按索引拆分的结构。
修正实现

易读版本(和原有编码思路接近)

核心调整点:把单条字典的定义放到索引循环内部,保证每个索引对应一个独立的新字典;调整循环顺序,先遍历公共索引,再给每个索引对应的字典填充不同外层键的值。

dict_1 = {'a': {0: 'name_1', 1: 'name_2'}, 'b': {0: 23, 1: 53}}
result = []
# 提取内层字典共有的索引值
common_indexes = list(dict_1.values())[0].keys()

for idx in common_indexes:
    # 每个索引对应一个全新的独立字典,避免引用同一个对象
    single_item = {}
    for outer_key, inner_dict in dict_1.items():
        single_item[outer_key] = inner_dict[idx]
    result.append(single_item)

print(result)
# 输出:[{'a': 'name_1', 'b': 23}, {'a': 'name_2', 'b': 53}]

简洁版本(列表推导式)

如果偏好更精简的写法,可以直接用列表推导完成:

dict_1 = {'a': {0: 'name_1', 1: 'name_2'}, 'b': {0: 23, 1: 53}}
common_indexes = next(iter(dict_1.values())).keys()
result = [{k: inner_v[idx] for k, inner_v in dict_1.items()} for idx in common_indexes]

注意:以上实现默认所有外层键对应的内层字典,都有完全一致的索引键,和你给出的示例场景匹配。

内容的提问来源于stack exchange,提问作者Roxy

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.01 20:03:39