【问题标题】:Check if words in a list exist in a dictionary and for the words that exist, add up their values检查列表中的单词是否存在于字典中,对于存在的单词,将它们的值相加
【发布时间】:2021-02-04 23:44:44
【问题描述】:

如果我有一个像下面这样的字典(为了便于阅读,整个字典被省略了):

{"'hood": '-0.375',
 '-0.4': '',
  '0': '-0.375',
  '101': '-0.25',
  '105': '-0.25',
  '300': '-0.25',
  '3tc': '-0.25',
  '400': '-0.25',
  'FALSE': '-0.486111111',
  'TRUE': '0.259615385',
  }

还有如下列表:

['This', 'is', 'a', 'media', 'player', 'that', 'is', 'FALSE', 'TRUE']

我如何浏览字典并检查字典中是否存在列表中的单词,如果确实存在,则将其与单词关联的值相加?当列表中的关键字存在时,我的目标是得到一个代表字典中值总和的最终数字。

例如,在我上面的列表中,“FALSE”和“TRUE”这两个词也在列表中,因为这两个词也出现在上面的字典中,所以我会将它们的值 -0.486111111 和 0.259615385 加在一起以创建一个单个数字作为最终输出。

我也意识到字典的值是字符串,所以我必须将它们转换为数字才能正确添加它们。

我试图循环遍历列表并检查它是否存在于字典中,但我遇到了问题。

【问题讨论】:

  • 另请参阅 homework 上的 Stack Overflow 指南。简单地把你的作业丢在这里是不可接受的。

标签: python python-3.x list dictionary


【解决方案1】:

与 ScienceSnake 的好答案相同的逻辑,但修改了 a) 在操作期间转换为 float 和 b) 使用 get 处理不在 dict 中的键:

sum(float(my_dict.get(i, 0)) for i in my_list)

【讨论】:

    【解决方案2】:

    标题中问题的答案是理解:

    sum(my_dict[key] if key in my_dict else 0 for key in my_list)
    

    但是,在提供的示例中,有一些奇怪之处。首先,字典中的数字用引号引起来,这意味着它们被视为字符串。在对它们求和之前,应将它们转换为浮点数,以便 my_dict[key] 变为 float(my_dict[key])。其次,python中true/false的布尔值是TrueFalse,把它们放在引号里只是把它们变成字符串。它在这里并没有破坏任何东西,但它不寻常且值得一提。

    【讨论】:

    • 我明白你的意思。 'TRUE' 和 'FALSE' 以这种格式存在的原因是因为我从一个文本文件创建了字典,其中包含两列 true 和 false 分别写为 'TRUE' 和 'FALSE'。感谢您的帮助。
    • 当然,论坛中很少有我们想要的数据哈哈。如果答案对你有用,你也可以接受。
    猜你喜欢
    • 2017-02-28
    • 2017-12-11
    • 2021-10-24
    • 1970-01-01
    • 2021-07-23
    • 1970-01-01
    • 2021-08-18
    • 2018-05-17
    • 1970-01-01
    相关资源
    最近更新 更多