Python 如何将线性字符串转换为trie?

Python 如何将线性字符串转换为trie?,python,networkx,trie,Python,Networkx,Trie,我使用的是开源的汉字数据集。作为该数据集的一部分,有一些字符串可以将汉字分解为各自的单位(称为部首)。我想将描述字符分解的字符串转换为尝试(这样我就可以使用networkx来呈现分解) 例如,对于此数据库条目: {“字符”:⺳","定义“:“网络”、“拼音”:[],“分解”:”⿱冖八","部首“:”⺳","匹配“:[[0],[0],[1],[1]} 此角色的分解将是 - Node(1, char='⿱') - Node(2, char='冖') # an edge connects '⿱'

我使用的是开源的汉字数据集。作为该数据集的一部分,有一些字符串可以将汉字分解为各自的单位(称为部首)。我想将描述字符分解的字符串转换为尝试(这样我就可以使用
networkx
来呈现分解)

例如,对于此数据库条目:

{“字符”:⺳","定义“:“网络”、“拼音”:[],“分解”:”⿱冖八","部首“:”⺳","匹配“:[[0],[0],[1],[1]}

此角色的分解将是

- Node(1, char='⿱')
  - Node(2, char='冖') # an edge connects '⿱' to '冖'
  - Node(3, char='八') # an edge connects '⿱' to '八' 
到目前为止,我已经提出了一个脚本,可以将字符串分解转换为字典(而不是图形)

decomposition\u类型={
“上下”:⿱',
“左-右”:⿰',
“对角点”:⿻',
“在上面下面”:⿺',
“低于超过”:⿹',
“上下颠倒”:⿸',
“上下中”:⿳',
'左-右-中':'⿲',
“内-外”:⿴',
“外-内”:⿵',
'外部-内部2':'⿷',
“内部-外部2”:⿶'
#“未知”:“未知”
}
分解类型\u反转=dict((值,键)表示键,分解类型中的值。items())
文件=[]
如果不是os.path.isfile('data/dictionary.json'):
将open('data/dictionary.txt')作为d:
对于d行:
file.append(json.loads(行))
对于i,枚举(文件)中的项:
项目['id']=i+1
dump(文件,open('data/dictionary.json','w+'))
其他:
file=json.load(打开('data/dictionary.json'))
解析def(块):
对于块中的块:
如果不是块['is_unit']:
返回错误
返回真值
def搜索(字符,字典=文件):
对于字典中的汉字:
如果汉字['character']==字符:
返回汉字
返回错误
def解析(反编译):
如果len(decomp)==1:
返回{“间距”:“?”}
块=[]
n_循环=0
对于反编译中的项:
append({“char”:item,“is_space”:分解中的item\u type\u reversed,“is_unit”:False})
未解析时(块):
对于i,枚举中的项(块):
如果项目中有“is_间距”:
如果项目['is_space']:
下一个\u项=分解\u类型\u反转[项['char']]。计数('-')+1
能匹配吗
对于块中的x[i+1:i+1+下一个\u项]:
尝试:
如果分解类型中的x['char']被反转:
can_match=False
除KeyError外:
通过
如果可以匹配:
块[i]={“间距”:项['char'],
“chars”:[l['char']如果l中的'char',则l表示l中的l
块[i+1:i+1+下一个项目]],
“是单位”:真}
删除块[i+1:i+1+下一个项目]
n_循环+=1
如果n_循环>10:
打印(反编译)
sys.exit()
返回块

迂腐的问题,但当你说“树”时,你的意思是“树”吗?是的,我是。意思还是很清楚?意思很清楚,但可能有点难找到!我只是想知道,这样我可以做一些编辑。添加标签后,这个问题更有可能被知道自己在做什么的人遇到和回答。那不是我——我知道很多树,但尝试的次数不多;)学究式的问题,但当你说“树”时,你是指“树”吗?是的,我是。意思还是很清楚?意思很清楚,但可能有点难找到!我只是想知道,这样我可以做一些编辑。添加标签后,这个问题更有可能被知道自己在做什么的人遇到和回答。那不是我——我知道很多树,但尝试的次数不多;)