我正在创建一个有限状态机来迭代一些文本,用于说话者,动词和引用标识。一切都很顺利,但我很沮丧我无法让我的字典按照我想要的方式工作。我想使用这样的字典,它有函数指针和整数作为值:
chars = ['a','b','c']
whatever = ['cheese']
state = 0
def function():
# don't know what's going on, ask user to check
transitions = {
0: {chars: 1, whatever: 2, '“': 4},
1: {chars: 3, '“': function},
etc.
}
for item in data:
for transition in transitions[state]:
if item in transition or transition in item:
state = transitions[state][item]
但是,如果找到它,这段代码不会调用该函数,或者如果我调用该函数,则调用int时会出错。
PS我不打算使用库等
答案 0 :(得分:2)
您可以使用对象类型来决定如何处理它。我不想进入代码的其他问题,但对于基本思想,这里是一个返回int或根据值类型调用函数的函数。
def action(value):
if isinstance(value, int):
return value
elif callable(value):
return value()
else:
raise ValueError("action does not work with %s objects" % type(value))