2016-07-26 60 views
0

用下面的代码:追加数组为一个循环的每个项目

class Calendar_Data(Resource): 
    def get(self): 
    result = [] 
    details_array = [] 
    # Times are converted to seconds 
    for day in life.days: 
     for span in day.spans: 
     if type(span.place) is str: 
      details = { 
      'name': span.place, 
      'date': 0, 
      'value': (span.length() * 60), 
      } 
      details_array.append(details) 
     data = { 
     'date': datetime.datetime.strptime(day.date, '%Y_%m_%d').strftime('%Y-%m-%d'), 
     'total': (day.somewhere() * 60), 
     'details': details_array 
     } 
     result.append(data) 
    return result 

我想要做的就是每天存在于天的列表,获取了相应的跨度一天,并用details填充阵列。然后将该details传递给data阵列,以便在该列表中的每一天获得该阵列。

这里的问题是,当我使用上面的这些嵌套循环时,它使用所有天的所有跨度而不是每一天填充我details

我不瘦在这种情况下使用zip将工作。也许一些列表理解,但我仍然不完全理解。

示例输入:

--2016_01_15 
@UTC 
0000-0915: home 
0924-0930: seixalinho station 
1000-1008: cais do sodre station 
1009-1024: cais do sodre station->saldanha station 
1025-1027: saldanha station 
1030-1743: INESC 
1746-1750: saldanha station 
1751-1815: saldanha station->cais do sodre station 
1815-1834: cais do sodre station {Waiting for the boat trip back. The boat was late} 
1920-2359: home [dinner] 

--2016_01_16 
0000-2136: home 
2147-2200: fabio's house 
2237-2258: bar [drinks] 

January的细节阵列的第十六应该有3项,但是每天不断地示出了所有的所有天数的项目。

+0

您可以添加您的输入示例,预期输出和实际输出。 – IanAuld

+0

@IanAuld我已经添加了它 –

回答

1

你在每个循环之间没有重新声明你的列表(Python有列表而不是数组)。您需要将创建的details_array移动到其中一个循环中,以便将其重新创建为空。你可能会Wnt信号它看起来像这样:

for day in life.days: 
    details_array = [] 
    for span in day.spans: 

这样一个day的每个新的迭代你就会有一个新的空单。