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
相关产品推荐
相关产品推荐

