我有一个具有以下值的文件:
Isabella,42567,Girl
Sophia,42261,Girl
Jacob,42164,Boy
Emma,35951,Girl
Ethan,34523,Boy
Mason,34195,Boy
William,34130,Boy
Olivia,34128,Girl
Jayden,33962,Boy
Ava,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()
知道为什么“ else”未正确总结吗?
J应该返回76,126,但返回76292
答案 0 :(得分:1)
那是因为您要在if条件中定义j
。输入else
时,它将使用先前计算的j
。
对于J
,它采用Olivia的值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])
答案 1 :(得分:0)
您要在第一个if中定义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()