2012-08-16 59 views
0

我想创建的元组在Django列表像的Python:创建元组

appointments = [(datetime(2012, 5, 22, 10), datetime(2012, 5, 22, 10, 30)),  
       (datetime(2012, 5, 22, 12), datetime(2012, 5, 22, 13)),  
       (datetime(2012, 5, 22, 15, 30), datetime(2012, 5, 22, 17, 10))] 

我遍历一个Django查询设置和appoinments列表存储的价值就像

appoinments = [] 
    for select_meeting in get_meeting: 
     getm = int(select_meeting.duration) 
     appoinments += zip(((select_meeting.meeting_datetime), 
          (select_meeting.meeting_datetime + timedelta(minutes = getm)))) 
    print appoinments 

名单但它返回的结果像这不是我的要求实际上

[(datetime.datetime(2012, 11, 11, 21, 5),), 
(datetime.datetime(2012, 11, 11, 22, 5),), 
(datetime.datetime(2012, 11, 11, 23, 5),), 
(datetime.datetime(2012, 11, 12, 0, 5),)] 
+0

只需追加到列表中? ((select_meeting.meeting_datetime,select_meeting.meeting_datetime + timedelta(minutes = getm)))' 不需要zip或所有额外的括号。 – Evert 2012-08-16 08:28:48

回答

2

您正在使用zip错误 - 它是执行它是如何工作的,这是正常的(它返回的第i个元组包含给定迭代的第i个元素)。 那些行应该是:

appointments.append((select_meeting.meeting_datetime, 
        select_meeting.meeting_datetime + timedelta(minutes = getm))) 

它应该是你现在想要的。

+1

哦,如果你想要一些“python magic”,你可以通过list comprehension在一行中完成:'appointmentments = [(m.meeting_datetime,m.meeting_datetime + timedelta(minutes = int(m.duration)))对于get_meeting中的m]' – jasisz 2012-08-16 08:49:57

0
appointments = [(x, x+timedelta(minutes=x.duration)) for x in get_meeting]