読者です 読者をやめる 読者になる 読者になる

2次元のdictから隣接行列を生成する

python

やりたいこと

隣接行列を作りたい。

で、隣接行列の元データは2次元のdict型で保存されている。

例えば、ノードAとノードCからノードBへと接続されていおり、そのエッジの重みが1という状態を作りたい。

{ノードA: {ノードB: エッジの重み}, ノードC: {ノードB: エッジの重み}}

から

       | ノードA | ノードB | ノードC |
------------------------------------------------------------------
ノードA |      |  1  |    |
ノードB |      |     |    |
ノードC |      |  1  |    |

という行列が作りたいわけだ。

どう解決するか?

このstack overflow説明にあるように自分で実装してしまえば。。。いいのかもしれないが、もっとてっとり早い方法が実はある。

pandasでdictからdataframeを生成して、csvにでも書き出してしまえばいい。

 from pandas import *

 df = DataFrame(books).T.fillna(0)

でおkだ。