我有一个包含以下值的文件:Isabella,42567,GirlSophia,42261,GirlJacob,42164,BoyEmma,35951,GirlEthan,34523,BoyMason,34195,BoyWilliam,34130,BoyOlivia,34128,GirlJayden,33962,BoyAva,30765,Girl我应该返回每个首字母的总和,我已经这样做了:for i in names_file: if i[0] not in my_dictionary: j = i.strip().split(",") my_dictionary[i[0]] = int(j[1]) else: my_dictionary[i[0]] += int(j[1])names_file.close()知道为什么“其他”没有正确总结吗?J 应该返回 76,126 但它返回 76292
2 回答
慕桂英4014372
TA贡献1871条经验 获得超13个赞
那是因为您j在 if 条件内进行定义。当它进入时,else它使用先前计算的j。
因为J,它需要奥利维亚的价值34128。这给了你 42164 + 34128 = 76292。
要解决这个问题,只需j在条件之外定义:
for i in names_file:
j = i.strip().split(",")
if i[0] not in my_dictionary:
my_dictionary[i[0]] = int(j[1])
else:
my_dictionary[i[0]] += int(j[1])
梦里花落0921
TA贡献1772条经验 获得超6个赞
如果您在第一个内部定义 j,因为当您在文件中到达 Jayden 时,您的 j 具有 Olivia 行中的值并且它没有得到更新。
这应该工作:
for i in names_file:
j = i.strip().split(",")
if i[0] not in my_dictionary:
my_dictionary[i[0]] = int(j[1])
else:
my_dictionary[i[0]] += int(j[1])
names_file.close()
添加回答
举报
0/150
提交
取消
