簡體   English   中英

如何使用 6 個列表在 python 中創建嵌套字典

[英]How to create a nested dictionary in python with 6 lists

我希望擴展此處采用的方法,但對於六個或更多列表的情況: How to Create Nested Dictionary in Python with 3 lists

a = ['A', 'B', 'C', 'D']
b = [1, 2, 3, 4]
c = [9, 8, 7, 6]
d = [0, 3, 5, 7]
e = [11, 13, 14, 15]

所需的 output:

{'A':{1 :9, 0:11} , 'B':{2:8, 3:13}, 'C':{3:7, 5:13} , 'D':{4:6, 7:15}}

到目前為止,這是我嘗試過的:

out = dict([[a, dict([map(str, i)])] for a, i in zip(a, zip(zip(b, c), zip(d,e) ))])

output 很接近,但它不是我要找的。 任何提示將非常感謝!

也許是這樣的:

out = {k: {k1: v1, k2: v2} for k, k1, v1, k2, v2 in zip(a, b, c, d, e)}

如果我們想使用過多的zip s,我們也可以這樣做:

out = {k: dict(v) for k,v in zip(a, zip(zip(b, c), zip(d, e)))}

Output:

{'A':{1 :9, 0:11} , 'B':{2:8, 3:13}, 'C':{3:7, 5:13} , 'D':{4:6, 7:15}}

這是一種使用兩個字典理解和zip()的方法:

result = {key: { inner_key: inner_value for inner_key, inner_value in value} 
    for key, value in zip(a, zip(zip(b, c), zip(d, e)))
}

print(result)

結果,使用原始問題中的列表:

{'A': {1: 9, 0: 11}, 'B': {2: 8, 3: 13}, 'C': {3: 7, 5: 14}, 'D': {4: 6, 7: 15}}

你可以試試NestedDict 首先安裝ndicts

pip install ndicts

然后

from ndicts.ndicts import NestedDict

a = ['A', 'B', 'C', 'D']
b = [1, 2, 3, 4]
c = [9, 8, 7, 6]
d = [0, 3, 5, 7]
e = [11, 13, 14, 15]

# Create levels and values
level_0 = a * 2
level_1 = b + d
values = c + e

# Initialize the keys of a NestedDict
nd = NestedDict.from_tuples(*zip(level_0, level_1))

# Assign values
for key, value in zip(nd, values):
    nd[key] = value

如果您需要將結果作為字典

result = nd.to_dict()

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM