networkx
現在、次のように、のMultiDiGraph
モジュールからジェネレーターを作成しています。
new_u0_edges = ((u, new_u1, key, edata) for u, v, key, edata in
self.g.edges_iter(u0, data=True,
keys=True) if v == path[0])
しかし、辞書内の単一のkey, value
ペアedata
、特にedata['label']
. ジェネレーターの代わりにリストでこれを行う遅い方法は次のとおりです。
new_u0_edges = ((u, new_u1, key, edata) for u, v, key, edata in
self.g.edges_iter(u0, data=True,
keys=True) if v == path[0])
for u, new_u1, key, edata in new_u0_edges:
edata['label'] = u0[0] + new_u1`
参考までに、u0
とnew_u1
はどちらも文字列です。はい、これは deBruijn グラフです。
私の質問は:ジェネレーターでこの dictを変更する方法はありますか? edata
dict.update([iterable])
ジェネレーターに必要な値を返さず、リスト内包表記は再割り当てを許可していないようです。
ありがとう!
更新: いくつかの変数データの例 (まだテスト中なのでばかげています):
u0 = 'DEFGHIJ'
new_u1 = 'EFGHIJKLMNabcdefghiwxyz012345'
key = 'rna'
edata = {'color': '#E41A1C', 'seq_type': 'rna', 'fontcolor': '#E41A1C', 'weight': 1, 'label': 'DEFGHIJK (nreads=1)'}