2014-12-18 50 views
0

我在Python中使用了一個字典,它具有以下內容,basiclly它在值集中有一個嵌套列表,現在我想修改嵌套列表。在字典中修改嵌套列表的簡單代碼

insn = { "pop":[1,["operand1 = [esp]", "esp = esp + 4"]]} 

下面是我在做什麼

for k,v in insn.items(): 
    for i, s in enumerate(v): 
     v[1][i] = s.replace("old", "new") 
    insn.update({k:v}) 

的代碼非常混亂,我不知道是否有一個簡單的方法來做到這一點?

+2

如果一切正常,嘗試HTTP://代碼審查。 stackexchange.com/ – matsjoyce

+0

所以'舊',你想用'新'代替它,你的代碼也會引發一個'AttributeError'' – Kasramvd

+0

這個'[1,[「操作數1 = [esp]」,「esp = esp + 4「]]'看起來很奇怪,你爲什麼這樣做? –

回答

0

我不完全確定你在這裏做什麼。但是假如你想改變esp或內嵌式列表中的一些其他的字符串,你可以做這樣的事情:

for k, v in insn.items(): 
    for i in range(len(v[1])): 
     v[1][i] = v[1][i].replace('esp', 'new_esp') 
    insn.update({k:v}) 

現在您可以:

>>> insn 
{'pop': [1, ['operand1 = [new_esp]', 'new_esp = new_esp + 4']]} 
+0

感謝您的回覆。你的代碼確實是我想要的,但我想這個代碼可以簡化爲一行。只是想弄明白。 – Pounce