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

Python将列表按指定头部转换为字典仅返回首个元素问题求解

问题原因
  • 仅读取了detail_flights列表的第一个元素拆分处理,没有遍历整个列表的所有航班记录
  • 字典的键重复时会直接覆盖旧值,你将detail_headers重复了4次得到24个键,但拆分第一个元素仅得到12个值,12组键值对中每6个就会重复一轮键名,前面的值全部被后面覆盖,最终仅保留最后6个值对应的字典
  • 未对每条记录拆分后的字段按detail_headers长度分组处理,单条detail_flights元素包含往返两趟航班的信息,每趟正好对应6个头部键
解决方法

遍历所有航班记录,将每条记录拆分后的字段按头部列表长度分组,每组单独打包为字典存入结果集,示例代码如下:

detail_flights = ['17:20 – 19:00\nMXP Aeroporto Malpensa\n‐\nBCN Barcellona-El Prat\ndiretto\n1h 40m\n6:20 – 8:00\nBCN Barcellona-El Prat\n‐\nBGY Bergamo Orio al Serio\ndiretto\n1h 40m', '17:20 – 19:00\nMXP Aeroporto Malpensa\n‐\nBCN Barcellona-El Prat\ndiretto\n1h 40m\n11:35 – 13:05\nBCN Barcellona-El Prat\n‐\nMXP Aeroporto Malpensa\ndiretto\n1h 30m', '17:20 – 19:00\nMXP Aeroporto Malpensa\n‐\nBCN Barcellona-El Prat\ndiretto\n1h 40m\n12:05 – 13:45\nBCN Barcellona-El Prat\n‐\nBGY Bergamo Orio al Serio\ndiretto\n1h 40m', '17:20 – 19:00\nMXP Aeroporto Malpensa\n‐\nBCN Barcellona-El Prat\ndiretto\n1h 40m\n20:15 – 21:55\nBCN Barcellona-El Prat\n‐\nBGY Bergamo Orio al Serio\ndiretto\n1h 40m']
detail_headers = ['departure_time', 'departure_airport', 'to_delete', 'arrival_airport', 'type_flight', 'duration']

result = []
for flight_item in detail_flights:
    # 拆分单条航班记录的所有字段
    fields = flight_item.split('\n')
    # 每6个字段为一组,对应一趟航班
    for i in range(0, len(fields), len(detail_headers)):
        single_flight_fields = fields[i:i+len(detail_headers)]
        # 打包成字典
        flight_dict = dict(zip(detail_headers, single_flight_fields))
        # 可选:删除没用的to_delete字段,不需要可注释下行
        flight_dict.pop('to_delete')
        result.append(flight_dict)

print(result)

运行后会得到包含8段航班(4条原记录,每条对应往返各一段)信息的字典列表,符合转换需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 00:51:01