-5
a=["a",["b",["c","d","e"],"f","g"],"h","j"]
b=a
index=[1,1,1]
for c in index:
  b=b[c]
print("Value: "+b.__str__())
#Code for change value to "k"
print(a)#result is ["a",["b",["c","k","e"],"f","g"],"h","j"]

そこで価値を得ることができますが、それを別のものに変えたいと思っています。

yourDict[1][1][1] = "テスト"

このようではありません。インデックスは配列から取得する必要があります。

4

1 に答える 1

0
yourDict['b']['d']['b'] = "test"

編集-OPは、インデックスは任意の長さのランタイム定義のリストから取得する必要があるため、これは受け入れられないと述べています。

解決:

reduce(lambda d,i:d[i], indexList[:-1], yourDict)[indexList[-1]] = "test"

デモ:

>>> yourDict = {'a':1, 'b':{'c':1, 'd': {'b':1}}}
>>> indexList = ['b','d','b']

>>> reduce(lambda d,i:d[i], indexList[:-1], yourDict)[indexList[-1]] = "test"
>>> yourDict
{'a': 1, 'b': {'c': 1, 'd': {'b': 'test'}}}

デモ2:

>>> yourDict = {'a':1, 'b':{'c':1, 'd': {'b':1}}}
>>> indexList=['a']

>>> reduce(lambda d,i:d[i], indexList[:-1], yourDict)[indexList[-1]] = "test"
>>> yourDict
{'a': 'test', 'b': {'c': 1, 'd': {'b': 1}}}
于 2012-08-14T19:22:32.837 に答える