Skip to main content
 首页 » 编程设计

python之在 Python 中,如何初始化/重新初始化关联数组(字典)

2025年05月04日11Renyi-Fan

在我正在编写的 Python 程序中,我将使用关联数组(字典),它将年份值作为键,将 12 个月的观察值列表作为值。例如,在将我的数据读入字典后,我可能会得到一个如下所示的字典(3 个键指向 3 个包含 12 个值的列表):

{ 1953:[34,39,29,12,16,14,35,42,44,31,22,29], 
  1954:[30,31,32,11,19,22,31,41,34,37,25,22], 
  1955:[35,36,37,15,19,25,30,45,38,39,21,26] } 

每次我将数据读入字典时,我可能会有不同数量的键/值对。我想在循环的每次迭代开始时从一个空字典开始,该循环从文件中读取数据(为简单起见,假设它是一个以逗号分隔的 13 个值列表,第一个是年份,然后是十二个月度观察值).我是 Python 的新手,想学习在 Python 中做这类事情的最佳实践。在 Java 中我会这样做:

for (int i = 0; i < 3; i++) 
{ 
    Map<String, List<String>> yearToObservationsMap= new HashMap<String, List<String>>(); 
    String line = bufferedReader.readLine(); 
    while (line != null) 
    { 
        line = bufferedReader.readLine(); 
        List<String> yearPlusObservations = line.split(","); 
        String year = yearPlusObservations.remove(0);  
        yearToObservationsMap.put(year, yearPlusObservations); 
    } 
 
    // now I can work with the dictionary to process the data 
} 

在我的用例中,每次使用时我都需要在字典中包含可变数量的条目,因此我想在每次加载之前重新初始化(或清空?)它。例如,在一次迭代中我可能有 5 年的数据,下一次迭代将有 30 年的数据,下一次会有 17 年的数据。所以在每次迭代中我都想清除字典。但是我是否也想以一种给它一个明确形式的方式声明字典,也就是说,它总是知道有年份的键和总是 12 个整数元素列表的值?

在此先感谢您帮助理解这一点。

请您参考如下方法:

只需打开文件,用 ',' 分割并将其传递给 dict 理解...

with open('your_file') as fin: 
    lookup = {row[0]:row[1:] for row in (line.split(',') for line in fin)} 

或者,使用 CSV 模块(并且正确地(咳咳),转换为 int)

with open('test.csv') as fin: 
    csvin = csv.reader(fin) 
    lookup = {col[0]:col[1:] for col in (map(int, row) for row in csvin)}