Python3.6对字典进行迭代,然后生成一个元组以返回一个和值

2024-09-29 21:22:38 发布

您现在位置:Python中文网/ 问答频道 /正文

假设我有一本简单的字典,上面列出了我七年半年度的开支。你知道吗

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时,循环打印“dual”值。你知道吗

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作为例子。现在剩下的最后一步是循环这些item并打印出一个最终的和值,但是我如何澄清python项只包含数值而不是year1year2?还是我在这里遗漏了什么?你知道吗


Tags: keyinfor字典isvalueitem元组
2条回答

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

我希望这有帮助。你知道吗

相关问题 更多 >

    热门问题