更新字典中键的值

2024-04-25 04:39:29 发布

您现在位置:Python中文网/ 问答频道 /正文

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

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应该返回76126,但它返回76292


Tags: 文件indictionarynamesmyelsefileint
2条回答

这是因为您在if条件中定义了j。当它进入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])

您在第一个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()

相关问题 更多 >