我的问题是重新+定义 - 运算符用ast评估表达式.我有一个表达式列表,使用eval()很容易解决:
>>> expr = '1+2*3**4/5'
>>> print(eval(expr))
33.4
Run Code Online (Sandbox Code Playgroud)
但我喜欢重新定义+-operator(添加)列表和dict,如下所示:
expr = '[1,2,3]+[4,5,6]'
Run Code Online (Sandbox Code Playgroud)
eval的常规结果是
[1,2,3,4,5,6]
但我想拥有
[5,7,9]
喜欢用R语言.
对于这样的字典,这同样适用:
expr = "{'a':1, 'b':2} + {'a':3, 'b':4}"
Run Code Online (Sandbox Code Playgroud)
我想要
{'a':4,'b':6}
简而言之,我认为要替换普通的add函数,即当操作数是list或dict正确的动作时.
我试图用ast和NodeTransformer,但没有成功.有人可以帮帮我吗?