Skip to main content
 首页 » 编程设计

python之向字典添加键和值

2025年05月04日14mfryf

我正在尝试向(空)字典中添加一个新的键/值对。我有一个包含字符串(年)的文本文件,脚本应该计算年份的出现次数。

    with open ("results/results_%s.txt" % bla, "r") as myfile: 
       for line in myfile: 
        line = line.translate(None, ''.join(chars_to_remove)) 
        abc = line.split("_", 2) 
        year = abc[1:2] 
        year = ''.join(year) 
        year = year.translate(None, ''.join(chars_to_remove)) 
        raey = {} 
        #increment the value of the "year"-key, if not present set it to 0 to avoid key erros 
        raey[year] = raey.get(year, 0) + 1 

但是,如果这返回例如 {'2004': 1},但它应该已经构建了一个字典(如 {1993 : 2, 2012 : 3}),如果我在 for 循环中插入一个“打印”语句我得到例如:

{'1985': 1} 
{'2062': 1} 
{'1993': 1} 
{'2000': 1} 
{'2007': 1} 
{'2009': 1} 
{'1993': 1} 
{'1998': 1} 
{'1993': 1} 
{'1998': 1} 
{'2000': 1} 
{'2013': 1} 
{'1935': 1} 
{'1999': 1} 
{'1998': 1} 
{'1992': 1} 
{'1999': 1} 
{'1818': 1} 
{'2059': 1} 
{'1990': 1} 

它没有构建正确的字典,代码正在用每个循环替换字典。我做错了什么?

请您参考如下方法:

问题是您在 for 循环中初始化 dict,因此每次都会创建一个新的。相反,将其移出

with open ("results/results_%s.txt" % bla, "r") as myfile: 
  raey = {} 
  for line in myfile: 
    line = line.translate(None, ''.join(chars_to_remove)) 
    abc = line.split("_", 2) 
    year = abc[1:2] 
    year = ''.join(year) 
    year = year.translate(None, ''.join(chars_to_remove)) 
    #increment the value of the "year"-key, if not present set it to 0 to avoid key erros 
    raey[year] = raey.get(year, 0) + 1