从字典中收集一系列键

时间:2013-05-25 15:11:48

标签: for-loop dictionary python-3.x range

我很难过。我有一个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)

我可以看到这看起来不正确,我觉得我需要*为范围内的日期(date_from,date_to)*但我无法想象如何让它循环遍历这样的字典键。

1 个答案:

答案 0 :(得分: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)