Python中如何利用嵌套列表创建指定结构的嵌套字典?
正确生成嵌套字典的实现方法
给定三个列表:
A = ['a','b','c'] B = [[1,2,3],[4,5,6]] C = ['A','B']
需要生成如下结构的嵌套字典:
{'A':{'a':1, 'b':2, 'c':3}, 'B':{'a':4, 'b':5, 'c':6}}
如果你的字典推导式仅保留最后一次循环结果(输出如下),说明推导式逻辑存在问题:
{'A': {'c': 3}, 'B': {'c': 6}}
正确实现方式
方法一:字典推导式(简洁写法)
利用zip将C的键与B的子列表一一配对,再通过dict(zip(A, values))直接生成完整的内层字典:
result = {key: dict(zip(A, values)) for key, values in zip(C, B)}
方法二:普通循环(直观易懂)
如果对推导式逻辑不熟悉,用双层循环逐步构建嵌套字典:
result = {} # 遍历C的键和对应的B子列表 for key, values in zip(C, B): inner_dict = {} # 遍历A的元素和对应子列表的值,构建内层字典 for k, v in zip(A, values): inner_dict[k] = v result[key] = inner_dict
错误原因说明
之前的推导式错误在于,内层循环时每次生成仅含单个键值对的字典并覆盖之前的内容,而非一次性将A和对应子列表的所有元素配对成完整的内层字典。通过dict(zip(A, values))可以直接把两组对应元素打包成完整的内层字典,避免覆盖问题。
内容的提问来源于stack exchange,提问作者Paulo Sanchez
相关产品推荐
相关产品推荐

