我是python的新手,所以请原谅我犯了一些愚蠢的错误,但是经过研究,我无法理解。我正在创建一个字典,从日历中的一个月的天数列表。我最初使用的是dict.fromkeys()
,但发现this提交的内容说服了我改为我的字典理解语句。然后我给字典中的每一个值另一个字典,以星期几为键,另一个字典为值。这本词典是taskDic,以琐事为关键,以人名为价值观。你知道吗
我的问题是,我在循环中的最后一个语句是指定同一个人每天做垃圾(etc),即使循环只是在第一天。我相信字典的开头有问题,因为它给所有的dic赋值,就好像它们是一样的。你知道吗
基本上,我的问题与上面的链接问题相同,但有嵌套字典。如果我需要澄清什么,请告诉我。谢谢您!你知道吗
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...
问题在于:
你每天都在使用相同的
taskDic
。你知道吗正如@jojonas所评论的,修复方法如下:
这样做的唯一问题是,最终会创建一堆未使用的副本,这对于此任务来说是很好的。你知道吗
你想做的是:
相关问题 更多 >
编程相关推荐