加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

python – 创建嵌套字典一个班轮

发布时间:2020-12-20 11:04:37 所属栏目:Python 来源:网络整理
导读:嗨我有三个列表,我想用一行创建一个三级嵌套字典. 即, l1 = ['a','b']l2 = ['1','2','3']l3 = ['d','e'] 我想创建以下嵌套字典: nd = {'a':{'1':{'d':0},{'e':0},'2':{'d':0},'3':{'d':0},'b':'a':{'1':{'d':0},{'e':0}} 我尝试使用zip来执行外部循环并添加
嗨我有三个列表,我想用一行创建一个三级嵌套字典.

即,

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

我想创建以下嵌套字典:

nd = {'a':{'1':{'d':0},{'e':0},'2':{'d':0},'3':{'d':0},'b':'a':{'1':{'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,'3': {'d': 0,'e': 0}},'b': {'1': {'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},'3': [{'d': 0},{'e': 0}]},'b': {'1': [{'d': 0},{'e': 0}]}
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读