【发布时间】:2021-02-09 22:10:18
【问题描述】:
我正在对节点树做一些工作,但我遇到了这个问题。 此列表包含一棵树的所有信息:
connections = ['Module/Expr/ListComp/BinOp/Name/id/i/',
'Module/Expr/ListComp/BinOp/Sub/',
'Module/Expr/ListComp/BinOp/Num/0.5/',
'Module/Expr/ListComp/comprehension/Name/id/i/',
'Module/Expr/ListComp/comprehension/Name/id/inp/']
我需要把它转换成:
{'Module':'Expr', 'Expr':'ListComp', 'ListComp':'BinOp comprehension',
'BinOp':'Name Sub Num', 'Name':'id', 'id':'i', 'Num':'0.5',
'comprehension':'Name', 'Name':'id', 'id':'i inp'}
目标是将连接解析为结构{'parent':'child(s)'} 的字典。为了做到这一点,我已经尝试过:
rules = {}
connections_list = [[word for word in path.split("/") if word] for path in connections]
for path in connections_list:
for i, word in enumerate(path):
same_level = [y[i+1] for y in connections_list if len(connections_list) > i+1]
if same_level:
unique_on_level = list(set(same_level))
rules.update({word:" ".join(unique_on_level)})
else:
pass
break
print(rules)
有一个输出:
{'Module': 'Expr',
'Expr': 'ListComp',
'ListComp': 'BinOp comprehension',
'BinOp': 'Num Sub Name'}
我想不出办法,这里的问题发生在最后一个节点周围,但我不知道如何解决,知道如何解决这个问题吗?
【问题讨论】:
-
这看起来像是一个 X-Y 问题:为什么你要把它解析成这么尴尬的符号?您正在尝试表达一棵树:为什么不使用图形解决整体问题?
标签: python arrays python-3.x string