为循环的每个项附加到数组

2024-04-20 10:57:12 发布

您现在位置:Python中文网/ 问答频道 /正文

代码如下:

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进行精简。也许是一些列表理解,但我还是没有完全理解。在

输入示例:

^{pr2}$

对于1月16日,details数组应该有3个项目,但是每天都会不断地显示所有日期的所有项目。在


Tags: in列表fordatadatetimedateplace数组
1条回答
网友
1楼 · 发布于 2024-04-20 10:57:12

您不会在每个循环之间重新定义列表(Python有列表而不是数组)。您需要将details_array的创建移动到其中一个循环中,以便将其重新创建为空。你可能会把它变成这样:

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

这样,对于day的每次新迭代,都会有一个新的空列表。在

相关问题 更多 >