我对list.append()
有一个奇怪的问题。我构建了一个列表,将字典中的一些值连接起来,如下所示:
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']}
我不明白为什么In [6]
中的append
后面修改了myDict
(参见In [2]
和Out [8]
的区别)
因为当您将myDict['k2']
分配给myList
时,您实际上只是创建一个指针myList
,指向myDict
中键k2
的值。你需要创建一个myDict['k2']
的副本,否则你只是在修改原始的。
试试myList = list(myDict['k2'])
myDict[k2]
是一个指向列表对象的指针。然后将myList设置为指向相同的列表对象。当您修改列表时,所有指向该列表的指针都将看到修改后的列表