2013-05-25 2 views
0

Я в тупике. У меня есть класс расписания, который содержит рабочие дни в словаре, называемом 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

Вам нужно перебрать диапазон, а затем проверить, что этот ключ в словаре:

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) 
+0

Большое спасибо! У меня есть работа с ints и pprint. Теперь, чтобы получить участие в datetime ... – Dijerydack

Смежные вопросы