1

行列の行インデックスがサイズ 5 の 5 ベクトルであり、行列の列インデックスもサイズ 5 のベクトルである巨大なスパース行列を定義する必要があります。より具体的には、この行列の要素を取得するには、I 2 つのベクトルを知る必要があります。

  1. 1 つは行のベクトルです。これを と呼びましょう(i,j,k,l,m)。どこi=1,...,20,j=1,...,10, k=1,...,10, l=1,...,10, m=1,...,10.
  2. 列に 1 つ、 と呼びましょう(n,o,p,q,r)。同様に、 n=1,...,20, o=1,...,10, p=1,...,10, q=1,...,10, r=1,...,10.

    辞書の各キーがDict_1別の辞書を参照する辞書の辞書のアイデアを実装しようとしています。それを と呼びましょうDict_2。のキーはDict_1のベクトルであり、 のキーは列のベクトルです。Dict_2

この辞書を定義する際のヒントや助けに本当に感謝しています。Pythonでネストされた辞書を実装する最良の方法は何ですか? しかし、私の行と列のキーがベクトルである場合にそのアイデアを拡張する方法を理解できませんでした。コメント、助けていただければ幸いです。

4

1 に答える 1

1

辞書を次のようにしてみませんか。

matrix = { (v1,v2):val}

たとえば、次のようになります。

>>> m = {((1,2,3,4),(9,8,8,2)):"info"}
>>> m[((1,2,3,4),(9,8,8,2))]
'info'

次のような設定が必要な場合は 、次のようにmatrix = { v1: { v2:val }}使用できます。deafultdict

>>> matrix = defaultdict(dict)
>>> matrix[(1,2,3,4)][(9,8,8,2)] = "info"
>>> matrix
defaultdict(<type 'dict'>, {(1, 2, 3, 4): {(9, 8, 8, 2): 'info'}})
>>> matrix[(1,2,3,4)][(9,8,8,2)]
'info'
于 2013-07-08T02:15:47.073 に答える