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

Python实现按行读文件并以dict[key1][key2]=value结构存储数据

解决方案

要实现data_dict[region][range] = population的嵌套字典结构,你需要先判断当前地区(region)是否已存在于self.data_dict中:如果不存在,就为该地区创建一个空字典;如果已存在,直接在对应地区的字典中添加range与population的映射关系。

另外建议用with语句管理文件操作,它会自动关闭文件,避免资源泄漏。修改后的完整代码如下:

import csv

# 先初始化self.data_dict为空字典(若尚未初始化)
self.data_dict = {}

with open(self.file_name, encoding="iso-8859-1") as file:
    reader = csv.DictReader(file)
    for line in reader:
        region = line["Region"].strip()  # 去除字段前后多余空格
        age_range = line["Range"].strip()  # 变量名替换为age_range,避免与Python内置函数range冲突
        population = line["Population"].strip()
        
        # 检查当前地区是否已在字典中,不存在则创建空字典
        if region not in self.data_dict:
            self.data_dict[region] = {}
        # 将年龄段与人口数存入对应地区的子字典
        self.data_dict[region][age_range] = population

关键说明:

  • 替换变量名range为age_range,避免和Python内置函数range()冲突引发错误。
  • 使用.strip()清理字段前后的空格,防止因文件中存在多余空格导致键名不一致。
  • with语句会在代码块执行完毕后自动关闭文件,比手动调用file.close()更安全可靠。

执行后,self.data_dict的结构会符合你的需求:

{
    "Scotland": {"1": "10000"},
    "Glasgow": {"14": "5000"},
    "Edinburgh": {"15": "4000"}
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 15:25:14