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

Python如何将文件每行首元素作为字典键、次元素作为值?

解决方案

你的现有代码问题在于把每一行拆分后的两个元素都平铺进了列表,最后得到的是[年份字符串, 队伍名, 年份字符串, 队伍名,...]的结构,没法直接生成键值对字典。直接在遍历文件行的时候构建字典更高效,以下是两种可行方案:

方案一:逐行遍历构建字典

这种方式逻辑清晰,方便处理空行或异常情况:

with open('world_series.txt','r') as file:
    winner_dict = {}
    for line in file:
        # 去除行首尾的空白字符(包括换行符)
        cleaned_line = line.strip()
        # 跳过空行,避免报错
        if not cleaned_line:
            continue
        # 按第一个空格拆分,确保队伍名称里的空格不会被拆分
        year_str, team = cleaned_line.split(' ', 1)
        # 将年份字符串转为整数作为字典的键
        winner_dict[int(year_str)] = team
print(winner_dict)

方案二:字典推导式(简洁写法)

如果文件内容格式规范,没有异常行,可以用更简洁的字典推导式:

with open('world_series.txt','r') as file:
    winner_dict = {
        int(line.split(' ', 1)[0]): line.split(' ', 1)[1]
        for line in file
        if line.strip()
    }
print(winner_dict)

关键注意点

  • 使用split(' ', 1)而不是普通split():因为队伍名称可能包含空格(比如New York Yankees),只按第一个空格拆分才能保证年份和队伍信息正确分离。
  • 年份转整数:确保字典的键是数字类型,符合你期望的{1903: 'Boston Americans'}格式。
  • 处理空行:文件末尾或中间可能存在空行,提前过滤避免拆分时出现索引错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.22 19:42:14