检查列表中的单词是否存在于字典中,对于存在的单词,将它们的值相加



如果我有一个像这样的字典(省略整个字典以使其可读):

{"'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加在一起,以创建一个数字作为最终输出。

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

我已经尝试遍历列表并检查它是否以这种方式存在于字典中,但我遇到了问题。

标题中问题的答案带有理解性:

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,将它们放在引号中只是将它们转换为字符串。它在这里没有破坏任何东西,但它是不寻常的,值得一提。

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

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

相关内容

  • 没有找到相关文章

最新更新