我不确定这种功能是否存在,或者最好如何解决这个问题。我想创建一个通用问题求解器,我可以在求解之前定义谓词,操作等,而不是直接编码。到目前为止,我一直将函数存储为字典的一部分。使用字典似乎可以做到这一点的唯一方法是使用可以想象的每种潜在组合来创建它。
例如,以前是这样的:
self.Operators = {"STACK": self.stack, "UNSTACK": self.unstack,
"PICKUP": self.pickup, "PUTDOWN": self.putdown}
我现在希望它更像是:
self.Operators = {("STACK", x, y): [[("clear", y), ("holding", x)], ["armempty", ("on", x, y)]]}
我知道我可能在这里用字典咆哮错误的树,但这是我第一次尝试做这样的事情而且我不知道适当/最Pythonesque管理方法是什么?
答案 0 :(得分:0)
我已经使用以下内容解决了这个问题(这就是我将要使用的内容):
self.Operators = {'PICKUP': [[['ontable', 'a'], ['armempty']], [['holding', 'a']]]}
然后返回的列表我使用列表解析进行解析:
y = [w.replace("a", args[0]) for w in y]
对于包含多个变量的列表,我将通过枚举字符来完成多个列表推导。