![](/img/trans.png)
[英]Python 3.6 iterating through list of dictionaries using filter() with lambda doesn't return dictionary's value
[英]Python 3.6 - iterating over a dictionary and then a resulting tuple to return a sum value
假设我有一个简单的字典,列出了我七年的半年支出。
d = {'year1':[1,2], 'year2':[3,4], 'year3':[5,6], 'year4':[7,8], 'year5':[9,10], 'year6':[11,12], 'year7':[13,14]}
我想知道我在这七年中花了多少钱,通过遍历这本词典并打印最终的总和值。 尽管我已经能够遍历它,从而得到一个包含年度总和的元组,但是遍历同样的结果,得到的元组却给了我令人困惑的值。
for key, value in d.items():
yearly_sums = key, sum(value)
print(yearly_sums)
Year1 3
Year2 7
Year3 11
到这里为止,它很好。 但是,例如,当我在此处打印每个item
,循环将打印“双”值。
continued from above...
for item in yearly_sums:
print('Yearly sum is:', item)
我执行了上面的代码片段以测试打印结果,因此我可以继续执行最后一步,而我得到的是:
Yearly sum is: Year1
Yearly sum is: 3
当我应该获取Yearly sum is: 3
例如, year1
Yearly sum is: 3
。 现在剩下的最后一步是遍历这些item
并打印出最终的总和值,但是我如何澄清python这些项目仅包含数字值而不是year1
, year2
? 还是我在这里想念什么?
您的代码中的问题是yearly_sums
的定义(或使用,取决于人们的看法)。
您正在将其定义为元组并对其进行循环:
yearly_sums = key, sum(value)
因此for item in yearly_sums:
的第一次迭代为您提供了年份,因此, Yearly sum is: Year1
被打印出来。 第二个返回实际成本,您将获得所需的结果。
相反,您可以使用以下命令:
d = {'year1':[1,2], 'year2':[3,4], 'year3':[5,6], 'year4':[7,8], 'year5':[9,10], 'year6':[11,12], 'year7':[13,14]}
for year, costs in d.items():
print('Yearly sum for {} is: {}'.format(year, sum(costs)))
哪个执行:
Yearly sum for year1 is: 3
Yearly sum for year2 is: 7
Yearly sum for year3 is: 11
Yearly sum for year4 is: 15
Yearly sum for year5 is: 19
Yearly sum for year6 is: 23
Yearly sum for year7 is: 27
或者 ,尽可能保留您的代码:
for key, value in d.items():
yearly_sums = key, sum(value)
print('Yearly sum for {} is: {}'.format(*yearly_sums))
当然会产生与上述相同的输出。
我认为这是您想要做的:
for key, value in d.items():
yearly_sums = key, sum(value)
print('Yearly sum is:', yearly_sums[1])
Yearly sum is: 3
Yearly sum is: 7
Yearly sum is: 11
Yearly sum is: 15
Yearly sum is: 19
Yearly sum is: 23
Yearly sum is: 27
我希望这有帮助。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.