【发布时间】:2014-08-13 21:58:33
【问题描述】:
我一直在尝试让它发挥作用,并且我已经用尽了每一个想法和网络搜索。似乎没有什么办法。我需要在defaultdict(list) 中输入sum 数字,我只需要最终结果,但无论我做什么,我都只能通过迭代并返回所有总和来获得最终结果。我一直在尝试的一般,
d = { key : [1,2,3] }
running_total = 0
#Iterate values
for value in d.itervalues:
#iterate through list inside value
for x in value:
running_total += x
print running_total
结果是:
1,3,6
我理解它这样做是因为它遍历 for 循环。我不明白的是,在不使用循环的情况下,我还能如何获得这些列表值中的每一个?还是有什么方法被忽略了?
要清楚,我只想返回最终数字,例如6
编辑我忽略了一个很大的因素,列表中的项目是 timedealta 对象,所以我必须使用 .seconds 将它们变成整数以进行添加。下面的解决方案很有意义,我也尝试过类似的方法,但尝试在 sum 语句中添加 .seconds 转换会引发错误。
d = { key : [timedelta_Obj1,timedelta_Obj2,timedelta_Obj3] }
【问题讨论】:
-
有什么问题?您是否只想打印出最终结果而不是所有中间结果(只需将打印语句移出循环)?还是您想完全避免 for 循环?
-
你的问题问得不好。它与
defaultdict(list)几乎没有任何关系,并且示例代码不正确且缩进不正确——即使是您的 EDIT... -
@martineau 不是QQ缩进不当
-
如果您想要整个字典的单个总数,
print语句不应该嵌套在for循环中——因此缩进在语义上是不正确的。 -
很抱歉,您的陈述表现不佳。
标签: python python-2.7 sum iteration