3

リストがあるとします

a = [3,4,1]

この情報で辞書を指すようにしたい:

b[3][4][1]

今、私が必要としているのはルーチンです。値を確認したら、b の位置内で値を読み書きします。

変数をコピーするのは好きではありません。変数 b の内容を直接変更したい。

4

3 に答える 3

12

ネストされた辞書であると仮定するbと、次のことができます

reduce(dict.get, a, b)

アクセスするb[3][4][1]

より一般的なオブジェクト タイプについては、

reduce(operator.getitem, a, b)

値の書き込みはもう少し複雑です。

reduce(dict.get, a[:-1], b)[a[-1]] = new_value

aこれはすべて、要素の数を事前に把握していないことを前提としています。もしそうなら、neves' answerで行くことができます。

于 2012-08-10T15:55:10.957 に答える
2

これが基本的なアルゴリズムになります。

アイテムの値を取得するには:

mylist = [3, 4, 1]
current = mydict
for item in mylist:
    current = current[item]
print(current)

アイテムの値を設定するには:

mylist = [3, 4, 1]
newvalue = "foo"

current = mydict
for item in mylist[:-1]:
    current = current[item]
current[mylist[-1]] = newvalue
于 2012-08-10T16:02:38.627 に答える
1

リストの長さが固定されており、既知であると仮定する

a = [3, 4, 1]
x, y, z = a
print b[x][y][z]

これを関数の中に入れることができます

于 2012-08-10T15:56:57.197 に答える