更新字典中键的值

时间:2019-10-04 11:39:08

标签: python python-3.x

我有一个具有以下值的文件:

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

2 个答案:

答案 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()