Python で dict をS式に変換する
SVM-light-TK はインプットがS式なので、それに合わせてS式に変換したい。再帰を使おうとしたらけっこう面倒で、結果こうなった。
def dict_to_s_expression(d): class parse: def parser(self, d_list): for d in d_list: for key,value in d.iteritems(): self.parsed += "(%s " % key if type(value) == self.list_type: self.parser(value) self.parsed += ")" elif type(value) == self.dict_type: self.parser([value]) self.parsed += ")" else: self.parsed += "%s)" % value def __init__(self, d_list): self.list_type = type(list()) self.dict_Type = type(dict()) self.parsed = "" self.parser(d_list) P = parse([d]) return P.parsed
使うときは
d = {"NP": [{"D": "a"}, {"N": "dog"}]} print dict_to_s_expression(d)