2 セットのエンティティ間で隣接リストを維持しています
dict1={'x1':[y1,y2],'x2':[y2,y3,y4]...}
dict2={'y1':[x1],'y2':[x1,x2],'y3':[x2]....}
新しいエントリが入ってくると、辞書を更新するための推奨される方法は何ですか?
エントリが 'x3':[y2,y4] であると仮定します。
x3 が常に新しい頂点であるとは限らないことに注意してください。
2 セットのエンティティ間で隣接リストを維持しています
dict1={'x1':[y1,y2],'x2':[y2,y3,y4]...}
dict2={'y1':[x1],'y2':[x1,x2],'y3':[x2]....}
新しいエントリが入ってくると、辞書を更新するための推奨される方法は何ですか?
エントリが 'x3':[y2,y4] であると仮定します。
x3 が常に新しい頂点であるとは限らないことに注意してください。
update()
次のコードの関数はどうですか。
dict1={'x1':['y1','y2'],'x2':['y2','y3','y4']}
def mkdict2():
dict2={}
for x,ylist in dict1.items():
for y in ylist:
dict2[y] = list(dict2.get(y,[])) + [x]
return dict2
dict2 = mkdict2()
print (dict1)
print (dict2)
def update(x,ylist):
dict1[x] = list(dict1.get(x,[])) + ylist
for y in ylist:
dict2[y] = list(dict2.get(y,[])) + [x]
update('x3',['y2','y4'])
print (dict1)
print (dict2)
これにより、次の出力が得られます。
{'x1': ['y1', 'y2'], 'x2': ['y2', 'y3', 'y4']}
{'y3': ['x2'], 'y2': ['x1', 'x2'], 'y1': ['x1'], 'y4': ['x2']}
{'x1': ['y1', 'y2'], 'x2': ['y2', 'y3', 'y4'], 'x3': ['y2', 'y4']}
{'y3': ['x2'], 'y2': ['x1', 'x2', 'x3'], 'y1': ['x1'], 'y4': ['x2', 'x3']}
同じデータを含む 2 つのデータ構造を保持することに常に神経質になっているため、整合性が取れなくなった場合に備えて、最初からmkdict2()
生成するために を使用しています。dict2
dict1