簡體   English   中英

如何將3個列表合並到一個詞典中(具有唯一元素)

[英]How To Merge 3 lists into one dictionary(with unique elements)

用Python寫的代碼

# Following Are The 3 Lists
sections = ['A', 'B', 'A', 'A', 'B']
students = ['Jack', 'Jim', 'Jack', 'Leena', 'Jim']
subjects = ['Maths', 'Biology', 'Chemistry', 'English', 'Physics']

# The Output Should Be A Dictionary
classDict = {'A':{'Jack' :{1:'Maths', 2:'Chemistry'}, 'Leena':{1:'English'}}, 'B':{'Jim':{1:'Biology', 2:'Physics'}}}

我可以將兩個列表中的任何一個合並到一個字典中,只考慮前兩個列表

classDict = {}   
for stu in students:  
    if not stu in classDict:     
        classDict[stu] = []    
    classDict[stu].append(stu)  

但是無法將其擴展到n(n = 3,對我而言)列表。

defualtdict和zip是您與此朋友的朋友:

我相信以下方法會起作用。

class_dict= defaultdict(lambda: defaultdict(lambda: defaultdict(str)))
for (section, stu, sub) in zip(sections, students, subjects):
    l = len(class_dict[section][stu])
    class_dict[section][stu][l+1] = sub

如果您確實想這樣做,甚至可以一行完成。

from collections import defaultdict
from functools import partial
class_dict= defaultdict(partial(defaultdict,list))

for (section, student, subject) in zip(sections, students, subjects):
    class_dict[section][student].append(subject)

[ideone在這里: http ://ideone.com/4xpAI]

這與您請求的結構有不同的結構,因為沒有理由要用整數作為鍵對字典的引用,除非您實現的是稀疏數組(即使這樣,還有更好的選擇)。 如果確實需要,可以將列表轉換為字典。 列表已經由整數鍵入。

對於那些不知道的人,python類型是可調用的,因此將對象創建包裝在lambda中是多余的。

暫無
暫無

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

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