为了账号安全,请及时绑定邮箱和手机立即绑定

更新字典中键的值

更新字典中键的值

扬帆大鱼 2022-06-14 17:22:18
我有一个包含以下值的文件: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])


查看完整回答
反对 回复 2022-06-14
?
梦里花落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()


查看完整回答
反对 回复 2022-06-14
  • 2 回答
  • 0 关注
  • 162 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号