簡體   English   中英

如何使用3個列表在Python中創建嵌套字典

[英]How to Create Nested Dictionary in Python with 3 lists

讓我們假設,我創建了3個列表,我想為它創建一個字典。 例如

a= ['A', 'B', 'C', 'D']
b =[1, 2, 3, 4]
c = [9, 8, 7, 6]

現在我想要的是創建一個這樣的字典:

{'A':{'1' :'9'} , 'B':{'2':'8'}, 'C':{'3':'7'} , 'D':{'4':'6'}}

是否有可能,有人可以幫助我嗎?

你可以從zip -ed列表創建字典,並將int值轉換為字符串 - 如果我理解你的問題

dct = {x: {str(y): str(z)} for x, y, z in zip(a,b,c)}

輸出:

{'A': {'1': '9'}, 'C': {'3': '7'}, 'B': {'2': '8'}, 'D': {'4': '6'}}

假設你想要的是在外部字典中有a be鍵,而bc是內部dicts的鍵和值元素:

d = {k: {x: y} for k, x, y in zip(a, b, c)}

更新:但是,在您的示例中, xy是字符串,所以如果這是您想要的:

d = {k: {str(x): str(y)} for k, x, y in zip(a, b, c)}
a = ['A', 'B', 'C', 'D'] # don't forget the quotation marks
b = [1, 2, 3, 4]
c = [9, 8, 7, 6]

res = dict()
for i, index_a in enumerate(a):
    res[index_a] = {str(b[i]): c[i]}

編輯 :或者使用列表理解(主要針對這里的選民,因為它是高級python並且更難理解):

res = dict((a[i], {str(b[i]): c[i]}) for i in range(len(a)))

你也可以在這里使用map()

a = ['A', 'B', 'C', 'D']
b = [1, 2, 3, 4]
c = [9, 8, 7, 6]

dct = dict(map(lambda x, y, z : (x, {str(y): str(z)}), a, b, c))

print(dct)

哪個輸出:

{'A': {'1': '9'}, 'B': {'2': '8'}, 'C': {'3': '7'}, 'D': {'4': '6'}}

你可以試試這個:

a= ['A', 'B', 'C', 'D']
b =[1, 2, 3, 4]
c = [9, 8, 7, 6]
new_data = dict([[a, dict([map(str, i)])] for a, i in zip(a, zip(b, c))])

輸出:

{'A': {'1': '9'}, 'C': {'3': '7'}, 'B': {'2': '8'}, 'D': {'4': '6'}}

要么

new_data = dict(zip(a, map(lambda x:dict([x]), zip(map(str, b), map(str, c)))))
{ a[x]: {b[x]: c[x]} for x in range(len(a))}

或者如果你真的是這個意思:

{ a[x]: {str(b[x]): str(c[x])} for x in range(len(a))}

你在找這樣的東西嗎?

a= ['A', 'B', 'C', 'D']
b =[1, 2, 3, 4]
c = [9, 8, 7, 6]

new_dict={}
set(map(lambda x,y,z:(new_dict.__setitem__(x,{y,z})),a,b,c))
print(new_dict)

輸出:

{'D': {4, 6}, 'A': {9, 1}, 'B': {8, 2}, 'C': {3, 7}}

暫無
暫無

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

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