在python dict值中混合使用int和函数指针

时间:2013-09-12 16:53:23

标签: python dictionary function-pointers state-machine

我正在创建一个有限状态机来迭代一些文本,用于说话者,动词和引用标识。一切都很顺利,但我很沮丧我无法让我的字典按照我想要的方式工作。我想使用这样的字典,它有函数指针和整数作为值:

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我不打算使用库等

1 个答案:

答案 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))