我对list.append()
有一个奇怪的问题。我建立了一个列表,连接dict中的一些值,如下所示:
In [3]: myDict = {'k1': u'value1', 'k2': [u'value2']}
In [4]: myList = myDict['k2']
In [5]: myList
Out[5]: [u'value2']
In [6]: myList.append(myDict['k1'])
In [7]: myList
Out[7]: [u'value2', u'value1']
In [8]: myDict
Out[8]: {'k1': u'value1', 'k2': [u'value2', u'value1']}
我不理解在myDict
append
之后修改In [6]
的原因(请参阅In [2]
和Out [8]
之间的区别)。
答案 0 :(得分:3)
因为当您将myDict['k2']
分配给myList
时,您实际上只是在myList
中使用键k2
创建指针myDict
。您需要创建myDict['k2']
的副本,否则您只需修改原始文件。
尝试myList = list(myDict['k2'])
。
答案 1 :(得分:2)
myDict[k2]
是指向列表对象的指针。
然后,将myList设置为指向同一列表对象。
修改列表时,指向它的所有指针都会看到修改后的列表。