繁体   English   中英

Python 3.6-遍历字典,然后遍历结果元组以返回总和值

[英]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这些项目仅包含数字值而不是year1year2 还是我在这里想念什么?

您的代码中的问题是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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM