我建立了一个for循环,该循环遍历列表的值,将它们作为两个字典的键输入,并将两个键值相乘。
打印时,它会在新行上给出每个相乘的值。
我想将这些值加在一起以获得一个总计,但是到目前为止还不能。
#The list and two dictionaries
List1 = ['coffee', 'tea' , 'cake' , 'scones' ]
Dictionary1 ={'coffee' :'4', 'tea' :'2' , 'cake' :'6' , 'scones' :'8' }
Dictionary2 = { 'coffee':'25' , 'tea':'18' , 'cake':'45' , 'scones':'30' }
#the for function which runs through the list
for i in range(len(List1)):
t = ((int(Dictionary1[List1[i]])*int(Dictionary2[List1[i]])))
#now if you print t the following is printed:
100
36
270
240
我想获得这些值的总和,但是到目前为止,我还没有。
为此,我尝试了sum(t)产生错误:
“> TypeError:“ int”对象不可迭代”
我认为这可能是连接错误,所以我尝试了sum(int(t)),但这不起作用。
我还尝试过将其转换为list()“ x = list(t),并用.replace("\n",",")
用逗号替换行。
欢迎所有反馈,我认为这可能很容易解决,但我只是没能到达那里-谢谢。
答案 0 :(得分:1)
如果我以最简单的方式正确思考,您可以分配一个变量,并在每次迭代中将其加起来,例如:
res = 0
for i in range(len(List1)):
t = ((int(Dictionary1[List1[i]])*int(Dictionary2[List1[i]])))
res += t
print(res)
编辑:正如@patrick在this post中建议和讨论的那样,变量名已编辑为sum
答案 1 :(得分:1)
错误是不言自明的:执行TypeError: 'int' object is not iterable
时出现t
。这意味着t
只是一个整数值。 built in sum()
需要进行迭代才能对其进行操作。
您需要在每次迭代中将int添加到某些内容中
List1 = ['coffee', 'tea' , 'cake' , 'scones' ]
Dictionary1 ={'coffee' :'4', 'tea' :'2' , 'cake' :'6' , 'scones' :'8' }
Dictionary2 = { 'coffee':'25' , 'tea':'18' , 'cake':'45' , 'scones':'30' }
# accumulate your values into s
s = 0
for i in range(len(List1)):
t = ((int(Dictionary1[List1[i]])*int(Dictionary2[List1[i]])))
s += t
print(s) # print sum
输出:
646
不过,您可以创建生成器理解并也使用built in sum()
函数:
print (sum ( int(Dictionary1[a])*int(Dictionary2[a]) for a in List1))
答案 2 :(得分:1)
这是完成任务的列表理解
total = sum(int(Dictionary1[x]) * int(Dictionary2[x]) for x in List1)
输出:
646