为循环的每个项追加数组

时间:2016-07-26 22:47:27

标签: python arrays loops

使用以下代码:

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个项目,但每天都会不断显示所有日子的所有项目。

1 个答案:

答案 0 :(得分:1)

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

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

这种方式对于day的每个新迭代,您都会有一个新的空列表。