簡體   English   中英

帶有循環的Python字典

[英]Python dictionaries with loops

我正在嘗試輸出以部門標題作為關鍵字的字典,以及僅以該部門內的員工作為其對應值的字典列表。 我已經關閉了,但是當我運行此功能時,dep_dict將所有部門員工附加到每個鍵上。 這是在做什么:

{
department1: [{employee A info}, {employee B info}],
department2: [{employee A info}, {employee B info}]
}

#Function for adding employees to dictionary by department
def dep_emp():
    for x in dep_tup:
        for names in employees:
            if x == employees[names]["em_department"]:
                dep_list.append(employees[names])
                dep_dict[x] = dep_list
                continue

但是相反,它應該看起來像這樣(如果有兩個部門),並假設員工A為部門1工作,員工B為部門2工作:

{
department1: [{employee A info}],
department2: [{employee B info}]
}

注意:dep_tup是用戶輸入的所有部門名稱的元組,雇員是由所有雇員及其信息組成的字典(鍵=雇員名稱)

您可以避免dep_dict[x] = dep_list中的每個name in employees dep_dict[x] = dep_list

您必須為每個部門重置/重新定義dep_list

def dep_emp():
    for x in dep_tup:
        dep_list = []  # define list here
        for names in employees:
            if x == employees[names]["em_department"]:
                dep_list.append(employees[names])

        if dep_list:
            dep_dict[x] = dep_list

您的數據結構dep_list只是在獲取雇員列表中的所有雇員。 通過編寫以下行:

dep_dict[x] = dep_list

您實際上是將每個“ x”映射到對dep_list的引用,無論如何都將是相同的。 相反,您要執行的操作是將employee [names]附加到存儲在每個dep_dict [x]處的獨立列表中。 如果密鑰尚未存儲在dep_dict中,則可以通過初始化列表,或者如果該密鑰已經存在,則通過將雇員[名稱]串聯起來來實現。

def dep_emp():
    for x in dep_tup:
        for names in employees:
            if x == employees[names]["em_department"]:
                dep_dict[x] = dep_dict.get(x, []) + employees[names]
                continue

暫無
暫無

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

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