更新字典中键的值

我有一个包含以下值的文件:


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

知道为什么“其他”没有正确总结吗?


J 应该返回 76,126 但它返回 76292


扬帆大鱼
浏览 163回答 2
2回答

慕桂英4014372

那是因为您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

如果您在第一个内部定义 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()
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python