簡體   English   中英

將鍵值附加到列表中的字典

[英]append key values to dictionary from list

我正在嘗試從並行列表創建字典,我被卡住了,因為使用 zip 和 setdefault 方法不允許超過 2 個參數。 任何人都可以提供幫助

mainList=["A","B"]
mainListValue1=[1,22,3]
mainListValue2=["v1","v2"]
mainListValue3=["v4","v5"]
final_dict = {}
for mainList, mainListValue1, mainListValue2 in zip(mainList, mainListValue1, mainListValue2):
    final_dict.setdefault(mainList, list()).append(mainListValue1)


print(final_dict)


尋找以下輸出



{'A': 
     1,
     'v1',
     'v4' 
'B': 
     22,
     'v2',
     'v5'
     }

首先,請注意您想要的輸出在語法上是不正確的,因為字典的值沒有連貫地定義,您需要將這些值打包成一個列表之類的東西。 否則,Python 解釋器會錯誤地認為,例如, 'v1'元素不是'A'的值,而是新鍵值的開始。

考慮到這一點,這里有一個簡單的方法來循環遍歷列表以將元素分組為字典的值。

result = {}

for i, key in enumerate(mainList):
    value = []
    for lst in [mainListValue1, mainListValue2, mainListValue3]:
        value.append(lst[i])
    result[key] = value

print(result)

結果是以下輸出:

{'A': [1, 'v1', 'v4'], 'B': [22, 'v2', 'v5']}

我很樂意回答您可能有的任何其他問題。

如果列表像這樣並行,則不需要setdefault() ,只需將zip()字典理解結合使用,如下所示:

#!/usr/bin/env python3
# https://stackoverflow.com/questions/60085285/append-key-values-to-dictionary-from-list

mainList = ["A","B"]
mainListValue1 = [1, 22, 3]
mainListValue2 = ["v1", "v2"]
mainListValue3 = ["v4", "v5"]

final_dict = {key: tuple(values) for key, *values
                in zip(mainList, mainListValue1, mainListValue2, mainListValue3)}

print(final_dict)  # -> {'A': (1, 'v1', 'v4'), 'B': (22, 'v2', 'v5')}

請注意, mainListValue1中的3被忽略,因為列表實際上不是並行的。

暫無
暫無

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

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