【发布时间】:2015-11-01 22:06:06
【问题描述】:
def command_add(date, event, calendar):
if date not in calendar:
calendar[date] = list()
calendar[date].append(event)
calendar = {}
command_add("2015-10-29", "Python class", calendar)
command_add("2015-10-12", "Eye doctor", calendar)
command_add("2015-10-12", "lunch with sid", calendar)
command_add("2015-10-29", "Change oil in blue car", calendar)
command_add("2015-10-29", "test car", calendar)
print(calendar)
def command_show(calendar):
for (date, event) in sorted(calendar.items()):
print(date+':')
for i in enumerate(event):
print(' '+str(i[0])+': '+i[1])
command_show(calendar)
def command_delete(date, entry_number, calendar):
for (date, event) in sorted(calendar.items()):
for i in enumerate(event):
del i[entry_number]
def command_delete(date, entry_number, calendar):
for (date, event) in sorted(calendar.items()):
for i in enumerate(event):
i.remove(entry_number)
command_delete("2015-10-29", 2, calendar)
command_show(calendar)
我尝试了这 2 种方法,但我似乎无法弄清楚如何访问事件以删除某个日期的特定事件 对 command_delete 的调用应该删除 command_add 函数的第三个条目,因为它从 0 开始计数
错误是我得到元组对象不支持删除或删除项目
【问题讨论】:
-
enumerate返回一个tuple:即(0, event[0]), (1, event[1]), (2, event[2]),...这意味着i是一个tuple,它是不可变的 -
代码有很多问题。 0) 两个函数名为
command_delete。 1)date参数被覆盖,因此丢失。 2) 检查date参数匹配的代码在哪里?即date参数未使用。 3) 你为什么要对日历进行排序?然后在排序后的seq上使用bisect... 4)command_add函数中的缩进是错误的 -
是的,我为命令删除设置了 2 个选项,因为它们都不起作用,我想也许人们至少会喜欢看到我尝试了一些东西以及我正在尝试做的事情。我对日历进行排序,所以当我打印它时,它会以正确的日期顺序输出。如果我是一个元组,我可以删除整个元组
-
研究我的答案,我修正并简化了你的代码:)