python字典嵌套分层查询_python-来自多个列表的嵌套字典

我正在尝试彼此分配两个嵌套字典的值.例如,如果我们假设父母和孩子,然后假设孙子如何分配给相应的孩子. (父母是关键,价值是孩子,然后孩子是关键,价值是孙子)

我试图从sqlite数据库中导入大型数据集,然后根据需要的父子关系将它们相应地分类为字典.这是为了创建嵌套字典的字典来填充qmenu,其中输入必须保持字典格式.我不熟悉如何通过映射或递归提高效率.

我当前的代码以我想要的方式工作,但是有什么方法可以使其更高效或递归?

# DATA

A = ['item0','item1']

B = [['item00','item01','item02'],['item11','item12']]

C = [['item000'],['item010','item011'],['item020'],['item110','item111'],['item120']]

# FLATTEN B

B_ls = []

for i in range(len(C)):

B_ls = [item for sublist in B for item in sublist]

# INITAIATE DICTIONARIES

master = {}

parent = {}

child = {}

# INITIATE CELL CONTENT COUNTER

skipper = 0

# CREATE NESTED DICITIONARIES

for j in range(len(A)):

child = {}

for i in range(len(B)):

tempD1 = {B_ls[i+skipper]:C[i+skipper]}

child.update(tempD1)

parent = {A[j]:child}

master.update(parent)

skipper += len(B[j])

# CHECK RESULTS

print(master)

解决方法:

这是使用嵌套字典理解的一种方法-

这个想法是通过在外部循环中同时压缩A和B来构建父子结构,因为B中的子列表或子项与父键一样多.

现在,这些子级中的每个子级都应该包含C中包含的子列表作为值,因此,每次我们要在内部字典理解中设置新的孙代时,我们都可以创建一个iterator并检索其下一项:

A = ['item0','item1']

B = [['item00','item01','item02'],['item11','item12']]

C = iter([['item000'],['item010','item011'],['item020'],['item110','item111'],['item120']])

d = {p:{gs:next(C) for gs in s} for p,s in zip(A,B)}

{'item0': {'item00': ['item000'],

'item01': ['item010', 'item011'],

'item02': ['item020']},

'item1': {'item11': ['item110', 'item111'],

'item12': ['item120']}}

标签:python-3-x,list,dictionary,python

来源: https://codeday.me/bug/20191024/1922442.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值