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

如何从元组列表创建字典且不覆盖key,实现指定格式数据输出

问题原因

你原有实现的错误主要有3点:

  1. 变量名拼写错误:greyhound多次误写为greyhoud,Distance误写为Distatnce,会触发未定义变量报错
  2. 循环逻辑冗余:内层for key in k是遍历key字符串的单个字符,会生成大量无意义的单字符键
  3. 存储逻辑错误:每次给greyhound的value套了一层多余的列表,append后会出现多层嵌套,不符合输出要求

解决方法

方案1:基于已有的table_information直接转换

你已经拿到了结构化的table_information列表,直接遍历每个元组对应赋值即可,代码如下:

# 初始化目标字典,三个字段对应空列表
new_dict = {
    "Date": [],
    "Track": [],
    "Distance": []
}

# 遍历每条数据,注意元组顺序为 (Track名称, 日期, 距离列表)
for track, date, dist_list in table_information:
    new_dict["Track"].append(track)
    new_dict["Date"].append(date)
    new_dict["Distance"].append(dist_list)

方案2:爬取过程中直接生成字典

不需要先存table_information列表,爬取时直接往目标字典追加数据即可,注意补充你提取距离列表的逻辑:

import requests
from lxml import html
import pandas as pd

new_dict = {
    "Date": [],
    "Track": [],
    "Distance": []
}

for t in my_url[:5]:
    page_detail = requests.get(t)
    tree_1 = html.fromstring(page_detail.content)
    title = ''.join(tree_1.xpath('//div/h1[@class="title"]/text()'))
    Track = title.split(' ')[0].strip()
    date = title.split('-')[1].strip()
    year = pd.to_datetime('now').year 
    race_date =  pd.to_datetime(date + ' ' + str(year)).strftime('%d/%m/%Y')
    # 补充你提取距离列表的逻辑,赋值给dist_list变量
    # dist_list = 你提取距离列表的代码
    
    # 直接追加到对应字段
    new_dict["Track"].append(Track)
    new_dict["Date"].append(race_date)
    new_dict["Distance"].append(dist_list)

注意:你原有爬取代码中往table_information追加的元组顺序是(race_date, Track),和你给出的示例table_information的元组顺序(Track, Date, Distance)不一致,实际使用时要注意调整顺序避免字段错位。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 20:45:01