尝试对字典中的键值对求和

时间:2019-03-23 00:42:05

标签: python python-3.x

我一直在努力理解如何对字典中的键值对中的值求和。

打印字典将产生类似于以下内容的信息:

print(cust.p)
{datetime.datetime(2018, 2, 8, 0, 0): '18.70', datetime.datetime(2018, 2, 12, 0, 0): '8.63', datetime.datetime(2018, 2, 6, 0, 0): '37.61'}

我试图通过使用self.cust.p.keys()一次传递每个键来在冒号后面添加值。

def add_p(self):
     return sum(self.p[self.p.values()]

我正在寻找将18.70、8.63和37.61相加的结果,以便当我调用该函数时,它将返回64.94。我也尝试使用for循环和values()无效。

谢谢您的时间。

3 个答案:

答案 0 :(得分:3)

您可以将dict值转换为整数,然后再将其传递给sum函数:

def add_p(self):
    return sum(map(int, self.p.values()))

答案 1 :(得分:1)

只需self.p.values()就足够了。因为这些值当前是字符串,所以应将它们转换为数字类型。在这种情况下,float最合适。

def add_p(self):
    return sum(float(x) for x in self.p.values())

答案 2 :(得分:1)

您将值存储为字符串,这会导致sum函数引发错误。

相反,如果在存储之前将字典值从字符串转换为浮点数(由于小数),代码将起作用。

要将字符串转换为浮点型,请使用map函数并将其结果传递给sum函数。

import datetime
keyval = {datetime.datetime(2018, 2, 8, 0, 0): '18.70', 
          datetime.datetime(2018, 2, 12, 0, 0): '8.63', 
          datetime.datetime(2018, 2, 6, 0, 0): '37.61'}

# map(float, keyval.values()) will convert all values to float
# sum will yield the total having sum all float values
sum(map(float, keyval.values()))