Python:字典中某些值的总和

时间:2018-10-19 09:08:22

标签: python dictionary

CABasicAnimation

我有一个字典dict和一个字符串名。现在,我想求和等于字符串名称字符的dict值。

通过我的解决方案,我只得到了值 71.07884, 110, 103.14484,但是我如何求和这些值。

如果我尝试print(sum(value)),我会得到以下消息:TypeError:“ float”对象不可迭代。

我是python的新手:)

4 个答案:

答案 0 :(得分:1)

您可以这样做-先初始化一个空列表,然后每次在循环中获取值时,将其append都添加到列表中。您将获得一个列表[71.07884, 110, 103.14484],然后可以对其进行汇总。

dict = {'A': 71.07884,
    'B': 110,
    'C': 103.14484,
    'D': 115.08864,
    'E': 129.11552,
    'F': 147.1766,
   }

name = "ABC"
values = []
for character in name:
    for key, value in dict.items():
        if key == character:
            values.append(value)
sum(values)

输出:

sum(values)
Out[6]: 284.22368

答案 1 :(得分:1)

您可以这样做:

mydict = {'A': 71.07884,
    'B': 110,
    'C': 103.14484,
    'D': 115.08864,
    'E': 129.11552,
    'F': 147.1766,
   }

name = "ABC"

sum(value for key, value in mydict.items() if key in name)

# 284.22368

请注意,我将您的词典重命名为mydict,因为dict是Python的内置函数,您不应将其用作变量名。

答案 2 :(得分:1)

您将收到该错误,因为value会根据其迭代器进行更改。为了找到总和,您需要存储和将值添加到另一个变量,然后调用sum(),也可以将其添加到新变量。

sum()所做的是获取一个列表并对其进行遍历。在您的代码中,它正在执行的操作是仅在循环中传递当前值,即1值。

示例:注意(执行此操作的方法有很多。)

name = "ABC"
sum = 0
for character in name:
    for key, value in dict.items():
        if key == character:
            print(value)
            sum = value + sum

print(sum) 

答案 3 :(得分:1)

我认为您需要这个:

list_name = "ADF"    
sum([value for key, value in dict.items() if key in list_name])