Неожиданное назначение данных во вложенных словарях 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...