如果我有一个像这样的字典(省略整个字典以使其可读):
{"'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的布尔值是True
和False
,将它们放在引号中只是将它们转换为字符串。它在这里没有破坏任何东西,但它是不寻常的,值得一提。
与ScienceSnake的好答案相同的逻辑,但修改了a)在操作期间转换为float
, b)使用get
处理不在dict
中的键:
sum(float(my_dict.get(i, 0)) for i in my_list)