You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何按时间区间将数据存入以变量i命名的独立列表?

按时间区间拆分数据到独立列表的实现方法

问题分析

你需要将包含Nome、Local、Hora字段的重复结构数据,按照intervalo字典定义的小时区间,分别存入list1到list4四个独立列表中,之前的代码将所有数据存入同一列表导致混杂,且尝试list[i]方式未成功,核心问题在于列表的初始化与索引映射逻辑有误。

解决方案

方法1:直接初始化独立列表并判断分配

先明确intervalo字典的结构(假设键对应列表编号1-4,值为小时区间元组),然后初始化四个空列表,遍历数据时判断Hora所属区间,将数据添加到对应列表:

# 初始化四个独立空列表
list1, list2, list3, list4 = [], [], [], []

# 示例时间区间字典(根据你的实际结构调整)
intervalo = {
    1: (0, 6),    # 0点-6点
    2: (6, 12),   # 6点-12点
    3: (12, 18),  # 12点-18点
    4: (18, 24)   # 18点-24点
}

# 模拟你的数据源(替换为实际数据)
dados = [
    {"Nome": "Maria", "Local": "Sala A", "Hora": "02:30"},
    {"Nome": "João", "Local": "Sala B", "Hora": "08:15"},
    {"Nome": "Ana", "Local": "Sala C", "Hora": "15:40"},
    {"Nome": "Carlos", "Local": "Sala D", "Hora": "21:05"}
]

# 遍历处理每个数据项
for item in dados:
    # 提取小时部分(如果Hora是datetime对象,直接用item["Hora"].hour;字符串则拆分转换)
    hora = int(item["Hora"].split(":")[0])
    
    # 判断所属区间并添加到对应列表
    if intervalo[1][0] <= hora < intervalo[1][1]:
        list1.append(item)
    elif intervalo[2][0] <= hora < intervalo[2][1]:
        list2.append(item)
    elif intervalo[3][0] <= hora < intervalo[3][1]:
        list3.append(item)
    elif intervalo[4][0] <= hora < intervalo[4][1]:
        list4.append(item)

# 输出验证
print("list1内容:", list1)
print("list2内容:", list2)
print("list3内容:", list3)
print("list4内容:", list4)

方法2:用列表容器管理子列表(更灵活)

如果后续可能调整区间数量,推荐用一个主列表管理所有子列表,通过索引映射分配数据,避免重复的条件判断:

# 初始化包含4个空列表的容器(对应list1到list4)
lista_grupos = [[], [], [], []]

# 时间区间字典
intervalo = {
    1: (0, 6),
    2: (6, 12),
    3: (12, 18),
    4: (18, 24)
}

# 模拟数据源
dados = [
    {"Nome": "Maria", "Local": "Sala A", "Hora": "02:30"},
    {"Nome": "João", "Local": "Sala B", "Hora": "08:15"},
    {"Nome": "Ana", "Local": "Sala C", "Hora": "15:40"},
    {"Nome": "Carlos", "Local": "Sala D", "Hora": "21:05"}
]

# 遍历处理数据
for item in dados:
    hora = int(item["Hora"].split(":")[0])
    # 匹配区间对应的列表索引(字典键1对应容器索引0,以此类推)
    for idx, (inicio, fim) in intervalo.items():
        if inicio <= hora < fim:
            lista_grupos[idx - 1].append(item)
            break

# 拆分出独立列表(可选)
list1, list2, list3, list4 = lista_grupos

关于list[i]失败的原因

你之前尝试的list[i]方式出错,大概率是这两个问题:

  1. 未提前创建包含子列表的容器,直接调用内置list类型的索引会报错;
  2. 索引映射错误:Python列表索引从0开始,而你的区间编号是1-4,直接用i作为索引会越界,需要用i-1对应容器的正确索引。

内容的提问来源于stack exchange,提问作者Thiago Ramos

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.19 23:15:42