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

Python如何从元组列表创建指定结构的嵌套字典

问题原因

你之前的写法最终只返回单个键值对,核心原因是Python字典的键具备唯一性:你通过['tempo'] * len(tempo_de_volta)生成的键列表全是重复的相同字符串,同键的新值会持续覆盖旧值,最终字典只会保留最后一次写入的条目。

实现目标嵌套字典的方案

前提是carros、tempo_de_volta、velocidade_media三个数组长度一致,索引位置一一对应单辆车的数据,直接遍历组装即可:

方法1:自动生成car1/car2...格式的外层键

如果不需要用carros.txt里的原始值做键名,按你给出的目标结构自动生成序号键:

import numpy as np

tempo_de_volta = np.loadtxt('tempos.txt', dtype=float)
carros = np.loadtxt('carros.txt')

tempo_de_volta_hrs = tempo_de_volta / 60
velocidade_media = 20.8 / tempo_de_volta_hrs
velocidade_media = np.round(velocidade_media, 3)

classif = {}
for idx in range(len(tempo_de_volta)):
    car_key = f"car{idx + 1}"
    classif[car_key] = {
        "tempo": tempo_de_volta[idx],
        "velocidade": velocidade_media[idx]
    }

方法2:直接用carros数组的内容作为外层键

如果carros.txt存储的是车辆编号/名称,直接读取作为外层键即可,注意如果是文本内容,加载时要指定dtype:

# 如果carros.txt存的是字符串类标识,加载时加dtype=str
carros = np.loadtxt('carros.txt', dtype=str)

classif = {}
for car_id, lap_time, avg_speed in zip(carros, tempo_de_volta, velocidade_media):
    classif[car_id] = {
        "tempo": lap_time,
        "velocidade": avg_speed
    }
注意事项
  • 组装前先确认三个数组长度一致,避免数据错位或索引报错,可以执行len(carros) == len(tempo_de_volta) == len(velocidade_media)校验,返回True再继续。
  • 如果需要更简洁的写法,也可以用字典推导式实现,效果和循环完全一致:
    classif = {f"car{i+1}": {"tempo": t, "velocidade": v} for i, (t, v) in enumerate(zip(tempo_de_volta, velocidade_media))}
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.31 21:57:23