如何通过嵌套列表推导式构建包含所有键值对的嵌套字典
三层嵌套列表生成目标嵌套字典的正确推导式实现
原推导式错误原因
你编写的推导式存在的核心问题是:把两层循环都放在了外层字典的推导作用域下,同一个外层键k1会在遍历内层子列表sub的元素时被反复赋值,后面的子字典会直接覆盖前面的,因此最终每个外层键仅能保留最后一个子键值对,无法保留全部映射。
正确推导式写法
你需要将子字典的生成逻辑单独作为外层字典的value部分,使用嵌套的字典推导式实现,代码如下:
# 输入的三层嵌套列表 tg1 = [[[1, 2], [3, 4]], [[5,6]], [[7,8], [9,10], [10,10]]] # 符合要求的嵌套字典推导式 D = {k1: {v[0]: v[1] for v in sub} for k1, sub in enumerate(tg1)}
结果验证
执行后得到的字典完全符合要求的映射关系:
D[0][1] = 2、D[0][3] = 4D[1][5] = 6D[2][7] = 8、D[2][9] = 10、D[2][10] = 10
内容的提问来源于stack exchange,提问作者ragnacode
相关产品推荐
相关产品推荐

