gpt4 book ai didi

python - 创建嵌套字典一个类轮

转载 作者:太空宇宙 更新时间:2023-11-03 13:29:02 25 4
gpt4 key购买 nike

您好,我有三个列表,我想用一行创建一个三级嵌套字典。

即,

l1 = ['a','b']
l2 = ['1', '2', '3']
l3 = ['d','e']

我想创建以下嵌套字典:

nd = {'a':{'1':{'d':0},{'e':0},'2':{'d':0},{'e':0},'3':{'d':0},{'e':0},'b':'a':{'1':{'d':0},{'e':0},'2':{'d':0},{'e':0},'3':{'d':0},{'e':0}}

我尝试使用 zip 执行外循环并添加列表,但元素被替换了。即,这不起作用:

nd = {i:{j:{k:[]}} for i in zip(l1,l2,l3)}

最佳答案

zip 不会在这里做。 zip 连续迭代所有 3 个列表。您需要的是产品——实际上是 3 个嵌套循环。您可以以牺牲一些可读性为代价将其扁平化为单个字典理解。

>>> {i : {j : {k : 0 for k in l3} for j in l2} for i in l1}

{'a': {'1': {'d': 0, 'e': 0}, 
'2': {'d': 0, 'e': 0},
'3': {'d': 0, 'e': 0}},
'b': {'1': {'d': 0, 'e': 0},
'2': {'d': 0, 'e': 0},
'3': {'d': 0, 'e': 0}}
}

或者,如果您想要最底层的单键字典列表(如您的 o/p 所建议的),

>>> {i : {j : [{k : 0} for k in l3] for j in l2} for i in l1}

{'a': {'1': [{'d': 0}, {'e': 0}],
'2': [{'d': 0}, {'e': 0}],
'3': [{'d': 0}, {'e': 0}]},
'b': {'1': [{'d': 0}, {'e': 0}],
'2': [{'d': 0}, {'e': 0}],
'3': [{'d': 0}, {'e': 0}]}
}

关于python - 创建嵌套字典一个类轮,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50279889/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com