2012-08-16 57 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]