我一直在努力理解如何对字典中的键值对中的值求和。
打印字典将产生类似于以下内容的信息:
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()无效。
谢谢您的时间。
答案 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()))