gpt4 book ai didi

python - 以递归方式评估 json 的优雅方法

转载 作者:太空宇宙 更新时间:2023-11-03 20:09:33 25 4
gpt4 key购买 nike

我有一个嵌套的 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)

最佳答案

您可以使用递归解包:

import operator
d = {'+':operator.add, '*':operator.mul, '-':operator.sub, '/':operator.truediv}
def eval_l(tokens):
a, b, c = tokens
return d[a](b, eval_l(c) if isinstance(c, list) else c)

print(eval_l(["+", 1, ["+", 3,["+", 3,4]]]))

输出:

11

关于python - 以递归方式评估 json 的优雅方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58780732/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com