向字典添加键和值
Add key and value to dictionary
我正在尝试将新的 key/value 对添加到(空)字典中。我有一个包含字符串(年)的文本文件,脚本应该计算年份的出现次数。
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
但是,如果这个 returns 例如 {'2004': 1},但它应该已经构建了一个字典(如 {1993 : 2, 2012 : 3} ),如果我插入一个 "print" 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}
它没有构建正确的字典,代码正在用每个循环替换字典。我做错了什么?
您调用 raey = {}
的每次迭代都会清除字典。将该行移动到循环之前以初始化一次字典并在循环中填充它。
问题是您在 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
我正在尝试将新的 key/value 对添加到(空)字典中。我有一个包含字符串(年)的文本文件,脚本应该计算年份的出现次数。
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
但是,如果这个 returns 例如 {'2004': 1},但它应该已经构建了一个字典(如 {1993 : 2, 2012 : 3} ),如果我插入一个 "print" 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}
它没有构建正确的字典,代码正在用每个循环替换字典。我做错了什么?
您调用 raey = {}
的每次迭代都会清除字典。将该行移动到循环之前以初始化一次字典并在循环中填充它。
问题是您在 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