【发布时间】:2020-03-05 22:09:01
【问题描述】:
我有一个嵌套的 json 结构,它必须根据运算符符号计算输出。我写了一个递归函数来完成任务。该解决方案对我来说看起来不太好。任何改进此功能的优雅方法将不胜感激。下面 json 的字符串表示应该产生 11。
d = ["+", 1, ["+", 3,["+", 3,4]]]
def eval_arithmetic(exp):
op = exp[0]
if op =="+":
ret = exp[1] + exp[2]
elif op == "*":
ret = exp[1] * exp[2]
elif op == "/":
ret = exp[1]/exp[2]
else:
ret = exp[1] - exp[2]
return ret
def eval_numberExpression(exp):
for idx, item in enumerate(exp):
if isinstance(item, list):
y = eval_numberExpression(item)
exp[idx] = y
if (idx == len(exp) and
( not isinstance(item, list))):
val = eval_arithmetic(item)
return val
return eval_arithmetic(exp)
【问题讨论】: