Skip to main content
 首页 » 编程设计

python之如何将字典组合成嵌套字典

2025年05月04日11虾米哥

我想将我的 3 个词典组合成 1 个嵌套词典。我编写了以下代码来使用 3 个嵌套的 for 循环来完成它。但是对于同一件事是否有任何有效的方法或递归函数?

X = {"X1":["O","E","P"],"X2":["M"]} 
Y = {"O":["a"],"E":["b","c"],"P":["d"],"M":["r"]} 
Z = {"a":["1"],"b":["2","3"],"c":[],"d":["4","5"],"r":["6"]} 
 
d1 = {} 
for k in X: 
    A = X[k] 
    d2 = {} 
    for v in A: 
        B = Y[v] 
        d3 = {} 
        for i in B: 
            C = Z[i] 
            d3.update({i:C}) 
        d2.update({v:d3}) 
    d1.update({k:d2}) 

请您参考如下方法:

你可以使用简单的递归:

X = {"X1":["O","E","P"],"X2":["M"]} 
Y = {"O":["a"],"E":["b","c"],"P":["d"],"M":["r"]} 
Z = {"a":["1"],"b":["2","3"],"c":[],"d":["4","5"],"r":["6"]} 
start = [X, Y, Z] 
def group(d): 
   return d if all(all(c not in i for i in start) for c in d) else \ 
           {i:group([c[i] for c in start if i in c][0]) for i in d} 
 
r = {a:group(b) for a, b in X.items()} 
print(r == d1) #d1 generated from OP's solution 

输出:

{'X1': {'O': {'a': ['1']}, 'E': {'b': ['2', '3'], 'c': []}, 'P': {'d': ['4', '5']}}, 'X2': {'M': {'r': ['6']}}} 
True