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

Python3如何拆分字典中的name键为last和first字段?

问题分析与解决

你的代码存在两个核心问题:

  • 第二个循环中使用的name是第一个循环最后一次迭代的变量值,并非当前row对应的名字字段,导致拆分的不是每行的目标内容
  • 拆分完成后没有将last和first存入对应字典,也未处理原有的name键

修正后的代码(基于你的原有逻辑)

import csv
import sys

before = []

with open(sys.argv[1]) as file:
    reader = csv.reader(file)
    next(reader)  # 跳过表头行
    for name, house in reader:
        before.append({"name": name, "house": house})

# 拆分name为last和first
for row in before:
    # 从当前行的name字段拆分
    last, first = row["name"].split(", ")
    # 添加新的键值对
    row["last"] = last
    row["first"] = first
    # 可选操作:删除原有的name键
    del row["name"]

# 测试输出结果
for row in before:
    print(row)

更高效的写法(读取时直接处理)

没必要先存储name再拆分,可在读取每行时直接处理,减少一次循环:

import csv
import sys

students = []

with open(sys.argv[1]) as file:
    reader = csv.reader(file)
    next(reader)  # 跳过表头行
    for name, house in reader:
        last, first = name.split(", ")
        students.append({"last": last, "first": first, "house": house})

# 测试输出结果
for student in students:
    print(student)

额外提示

如果CSV中的名字格式存在不统一的情况(比如逗号后没有空格),可以改用split(",", 1)拆分后再去除首尾空格:

last, first = name.split(",", 1)
last = last.strip()
first = first.strip()

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.22 20:06:19