Неожиданное назначение данных во вложенных словарях Python

Я новичок в Python, поэтому прошу прощения за любые глупые ошибки, но после исследования я не могу понять это. Я создаю словарь из списка дней в месяце, взятых из календаря. Я изначально использовалdict.fromkeys() но нашелэтот представление, которое убедило меня перейти к заявлению о понимании словаря, которое я имею. Затем я даю каждому значению в словаре другой словарь, в котором ключом является день недели, а другим словарем - значение. Этот словарь - taskDic, в котором ключами являются рутинные операции, а в качестве значений будут содержаться имена людей.

Моя проблема в том, что мое последнее утверждение в моих циклах - это назначение одного и того же человека для выполнения мусора (и т. Д.) На каждый день, даже если цикл только в первый день. Я считаю, что что-то не так с тем, как я запускаю словарь, потому что он присваивает значения всем диксам, как если бы они были одинаковыми.

По сути, у меня та же проблема, что и у связанной проблемы, но с вложенными словарями. Пожалуйста, дайте мне знать, если мне нужно что-то уточнить. Спасибо!

import calendar

week = ['Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday', 'Sunday']
taskDic = {'Trash':[], 'Groceries':[], 'Clean':[]} 
teamList = ['Jane', 'Peter', 'Jake', 'Eliza', 'Sarah', 'Bill']
person = 0

cal = list(calendar.Calendar().itermonthdays(2015, 8))
cal = {k: {} for k in cal}

for i in cal:
    cal[i] = {week[i % 7]: taskDic}

for i in cal:  
     if (cal[i].keys() != 'Saturday') and (cal[i].keys() != 'Sunday'):
         for j in cal[i]:   
              for k in cal[i][j]:  
                cal[i][j][k] = teamList[person % len(teamList)]
                person += 1

Мой результат выглядит так:

0 {'Monday': {'Trash': 'Eliza', 'Groceries': 'Sarah', 'Clean': 'Bill'}}
1 {'Tuesday': {'Trash': 'Eliza', 'Groceries': 'Sarah', 'Clean': 'Bill'}}
2 {'Wednesday': {'Trash': 'Eliza', 'Groceries': 'Sarah', 'Clean': 'Bill'}}
3 {'Thursday': {'Trash': 'Eliza', 'Groceries': 'Sarah', 'Clean': 'Bill'}}
etc...

Ответы на вопрос(1)

Ваш ответ на вопрос