在類Week中,我使用包含星期一至星期六的字符串鍵的.fromkey()方法創建了一本字典,並將它們全部初始化爲一個空列表:迭代列表字典時的奇怪輸出
self.weekDict = dict.fromkeys(dayNameList, [])
我有那麼在員工列表進行迭代,並且,在每個迭代中,迭代工作日內,並追加一個員工每一天的相應weekDict列表功能:
def setWeekDict(employees):
for employee in employees:
for day in employees[employee].workDays:
self.weekDict[day].append(employee)
print "employee: " + employee
print "weekday/list: " + str(day) + str(self.weekDict[day])
我期待weekDict列表,以反映每個計劃工作的人給定的一天。相反,似乎每天的列表累積了我爲員工每天迭代的總次數。我的報表打印輸出這樣的:
employee: Addison
weekday/list: Saturday['Addison']
employee: Addison
weekday/list: Monday['Addison', 'Addison']
employee: Addison
weekday/list: Tuesday['Addison', 'Addison', 'Addison']
employee: Addison
weekday/list: Wednesday['Addison', 'Addison', 'Addison', 'Addison']
employee: Addison
weekday/list: Thursday['Addison', 'Addison', 'Addison', 'Addison', 'Addison']
很顯然,我只是想「艾迪」或任何其他僱員出現每天一次,我不能在我的for循環將有助於各列表中添加員工明白什麼名稱+以前員工姓名已添加到其他列表的次數。我只能認爲dict.fromkeys()創建的鍵實際上都指向相同的列表,但我不認爲這是fromkeys()函數的工作方式。
你沒仔細看我的答案:http://stackoverflow.com/a/14259052/846892 –
哈哈,你必須自從我上次看到帖子後已經更新了它。謝謝。因此fromkeys()僅在使用可變對象時才複製引用 - 很好理解! – user1427661
因此爲什麼它更快。 –