使用以下代码:
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]
1月16日,细节数组应该有3个项目,但每天都会不断显示所有日子的所有项目。
答案 0 :(得分:1)
您不会在每个循环之间重新声明您的列表(Python列表而不是数组)。您需要在其中一个循环内移动details_array
的创建,以便将其重新创建为空。你可能会看起来像这样:
for day in life.days:
details_array = []
for span in day.spans:
这种方式对于day
的每个新迭代,您都会有一个新的空列表。