0

話者、動詞、および引用の識別のためにテキストを反復処理する有限状態マシンを作成しています。すべて順調に進んでいますが、辞書が思うように機能しないことに不満を感じています。関数ポインターとintの両方を値として持つ、このような辞書を使用したい:

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ライブラリなどを使用するつもりはありません。

4

1 に答える 1

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))
于 2013-09-12T17:07:50.280 に答える