0

我难住了。我有一个 Timesheet 类,它在一个名为 self.timesheet 的字典中保存工作日,其中日期作为键和小时,速率作为值。我正在尝试编写一个函数来显示用户定义的日期范围内的所有条目。

现在让我们假设关键日期是简单的整数 20 - 25。我试过这个,它根本没有做任何事情。没有错误,什么都没有。

def show_days(self):
    date_from = input("From date: ")
    date_to = input("To date: ")
    t = self.timesheet

    for dates in t[date]:
        range(date_from, date to)
        print(dates)

我可以看到这看起来不对,我觉得我需要 *for dates in range(date_from, date_to)* 但我不知道如何让它像这样遍历字典键。

4

1 回答 1

1

您需要遍历范围,然后检查该键是否在字典中:

for day in range(date_from, date_to + 1):
    if day in t:
        print day, t[day]

请注意,由 产生的值range()不包括终点,所以我过去总是确保date_to + 1它被包括在内。

如果您的键不是整数而是datetime.date对象,则必须构造某种循环datetime.timedelta()来遍历两个值之间的所有日期:

date = date_from = datetime.date(2012, 1, 15)
date_to = datetime.date(2012, 3, 12)

while date <= date_to:
    if date in t:
        print date, t[date]
    date += datetime.timedelta(days=1)
于 2013-05-25T15:13:10.917 回答