簡體   English   中英

Python:創建列表列表作為字典值

[英]Python: Create list of lists as dictionary values

我有兩個列表,希望通過索引將它們作為字典中的鍵值對關聯。 密鑰列表具有多個相同的元素。 我希望將值列表中的所有元素配對為一個列表列表。 我正在使用list.append()方法,但這沒有給我想要的輸出。 有關代碼的任何建議,還是應該以其他方式查看問題?

list1 = ['a', 'b', 'b', 'b', 'c']
list2 = [['1', '2', '3'], ['4', '5', '6'], [ '7', '8', '9'], ['10', '11', '12'], ['13', '14', '15']]

combo = {}
for i in range(len(list1)):
    if list1[i] in combo:
        combo[list1[i]].append(list2[i])
    else:
        combo[list1[i]] = list2[i]

電流輸出:

{'a': ['1', '2', '3'], 'b': ['4', '5', '6', [ '7', '8', '9'], ['10', '11', '12']], 'c': ['13', '14', 15']}

所需的輸出:

{'a': [['1', '2', '3']], 'b': [['4', '5', '6'], [ '7', '8', '9'], ['10', '11', '12']], 'c': [['13', '14', 15']]}

使用defaultdict ,空列表為起始值

 result = defaultdict(list)

 for key, value in zip(list1, list2):
      result[key].append(value)

試試這個代碼。 當我嘗試使用您提供的相同輸入時,它就起作用了。

#Input
list1= ['a','b', 'b','b', 'c']
list2 = [['1', '2', '3'], ['4', '5', '6'], [ '7', '8', '9'], ['10','11','12'], ['13', '14', '15']]

combo= {}
for index, value in enumerate(list1):
    if value in combo.keys():
        combo[value].append(list2[i])
    else:
        combo[value]= []
        combo.append(list2[i])
#output
print(combo)
{'a': [['1', '2', '3']],'b': [['4', '5', '6'], ['7', '8', '9'], ['10', '11', '12']], 'c': [['13', '14', '15']]}

如果您希望獲得更Python化的響應,還可以使用dict comprension:

output = {key: [value] for key, value in zip(list1, list2)}

暫無
暫無

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

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