我有一本这样的python词典。在
dictionary = {"00":[1,2,3,4,5,6,7,8,9],"01":[1,2,3,4,5,6,7,8,9],"02":[1,2,3,4,5,6,7,8,9],"03":[1,2,3,4,5,6,7,8,9],"04":[1,2,3,4,5,6,7,8,9]........up-to "99":[1,2,3,4,5,6,7,8,9]}
我必须从“00”列表中删除值2。在
^{pr2}$这里key的值是“00”,sudokumatrix[i][iindex]的值是2
{"00":[1,3,4,5,6,7,8,9],"01":[1,3,4,5,6,7,8,9],"02":[1,3,4,5,6,7,8,9],"03":[1,3,4,5,6,7,8,9],"04":[1,3,4,5,6,7,8,9].....}.
我得到的结果是:
{"00":[1,3,4,5,6,7,8,9],"01":[1,2,3,4,5,6,7,8,9],"02":[1,2,3,4,5,6,7,8,9],"03":[1,2,3,4,5,6,7,8,9],"04":[1,2,3,4,5,6,7,8,9]....}
我把整个代码发布在这里:
dictionary = dict()
zerotonine = "123456789"
list2 = list(zerotonine)
list2 = [int(i) for i in list2]
sudokumatrix=[]
for p in range(9):
for q in range(9):
keyis=str(p)+str(q)
dictionary[keyis] = list2
for i in range(9):
initialinput = [1,2,3,4,5,6,7,8,9]
list1=list(initialinput)
list1 = [int(i) for i in list1]
sudokumatrix.append(list1)
key = "00"
del dictionary[key][dictionary[key].index(sudokumatrix[0][1])]
print dictionary
与指针有关的问题。在
替换此项:
有了这个:
^{pr2}$您正确地创建了list2,但是当您进入循环时,Python不会在每次迭代中都生成一个全新的副本。它生成指向原始列表的指针。Python看到:
然后说“哦,列表2?我认得那个名字!我已经把它作为记忆中的对象了!我只需更新原始副本并将其链接到此处就可以节省一些空间!任何时候有人想看它或更新它,我会处理它的原始和一切将是可怕的永远!!!”在
好吧,也许python解释器不是那么热心,但我喜欢这样想。最终结果是所有字典值都指向原始列表。在
如果您不介意删除列表中出现的
2
,可以使用列表理解:这将创建一个新的列表,并避免更改其他值,因为您的
dictionary
值似乎都引用了同一个列表。在编辑:是的,你的字典值引用同一个列表
您可以使用字典和列表理解来创建您的
^{pr2}$dictionary
EDIT==我想(因为
dictionary
的生成没有给出)==EDIT。 原因是键'00'
,'01'
。。。指向同一个列表。修改其中一个肯定会影响其他人。在试着用这个来生成你的dict
这部分代码实际上没有错,但是使用
list.remove()
会使它更好。在相关问题 更多 >
编程相关推荐