【发布时间】:2021-07-27 14:10:39
【问题描述】:
我试图递归地从嵌套字典中获取所有数字的总和,但我的代码不断向我抛出错误。我不确定我可以进行哪些其他更改来解决此问题,因此我们将不胜感激!
obj = {
"a":2,
"b":{"x":2, "y":{"foo":3, "z":{"bar":2}}},
"c":{"p":{"h":2, "r":5}, "q":"ball", "r":5},
"d":1,
"e":{"nn":{"lil":2},"mm":"car"}}
def recursive_sum(n):
current_sum = 0
for key in n:
if not isinstance(n[key], dict):
current_sum = current_sum + n[key]
else:
current_sum = current_sum + recursive_sum(n[key])
return current_sum
recursive_sum(obj)
以下是我不断收到的错误消息:
TypeError Traceback (most recent call last)
<ipython-input-18-04d5913ff6b1> in <module>
15 return current_sum
16
---> 17 recursive_sum(obj)
<ipython-input-18-04d5913ff6b1> in recursive_sum(n)
12 current_sum = current_sum + n[key]
13 else:
---> 14 current_sum = current_sum + recursive_sum(n[key])
15 return current_sum
16
<ipython-input-18-04d5913ff6b1> in recursive_sum(n)
10 for key in n:
11 if not isinstance(n[key], dict):
---> 12 current_sum = current_sum + n[key]
13 else:
14 current_sum = current_sum + recursive_sum(n[key])
TypeError: unsupported operand type(s) for +: 'int' and 'str'
【问题讨论】:
-
你有
"q":"ball"和"mm":"car";你可能想处理这些 -
您说代码应该对嵌套字典中找到的偶数求和。用你自己的话来说,你的代码的哪一部分是为了确保你求和的东西是偶数?或者他们确实是数字?如果您在分析代码时连那么都没有,我不得不怀疑它实际上是您自己的代码。
-
@KarlKnechtel 拼写错误,我现在已经更正了。我必须对代码中的数字求和,但其中一个重要部分是区分数字和字符串,我尝试通过类型转换来处理这个问题,但没有成功。因此,我在这里寻求帮助。我的朋友,你应该尽量不要太怀疑别人
标签: python python-3.x dictionary recursion