在Python中将邻接列表映射到同义词列表

2024-06-02 05:07:30 发布

您现在位置:Python中文网/ 问答频道 /正文

我有两个python字典,它们的结构是defaultdict,遵循以下格式{string:set(字符串)}。 具体如下:

mnAdjacency = {mnID: set(mnIDs)}
#example- {'D01.021.123':set(['D01','D01.021'], 'G11.456':set(['G11']))
mn2ui = {mnID: set(dUI, cUI)}
#example- {'D01.021.123':set(['D00005', 'C000023']), 'G11.456':set(['D89456', 'C00456'])}

我试图将邻接列表的键和值映射到同义词列表的键和值,同时保留邻接列表的关联。它保存在一本词典中,以后用于输出。本词典如下:

meshTerm = {dUI: {'name': 'string','edges': [('is_part_of', 'dUI')]}}
#example- {'D00005': {'name': 'bike','edges': [('is_a', 'D00004')]}, 'C00002': {'name': 'car','edges': [('is_a', 'D00004)]}}

我当前的代码试图将所有内容都保存在内存中,它会占用内存,从而导致Kill:9

邻接列表为mnAdjacency,同义词列表为mn2ui。 meshTerm[ui]['edges']是一个defaultdict(dict),它为每个ui存储各种属性

 for leaf, branches in mnAdjacency.iteritems():
    for branch in branches:
        startNodes = mn2ui[leaf]
        endNodes = mn2ui[branch]
        for start in startNodes:
            for end in endNodes:
                meshTerm[start]['edges'].append(('is_a', end))

输出将是向meshTerm字典添加关系元组('is_a',dUI)

一定有更聪明的方法来解决这个问题,但我认为我的googlefoo让我失望了


Tags: namein列表forstring字典isexample