天天看點

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