方法copy返回一个新字典,其包含的键值对与原来的字典相同(这个方法执行的是浅复制, 因为值本身是原件,而非副本)。
>>> x = {'username': 'admin', 'machines': ['foo', 'bar', 'baz']}
>>> y = x.copy()
>>> y['username'] = 'mlh'
>>> y['machines'].remove('bar')
>>> y
{'username': 'mlh', 'machines': ['foo', 'baz']}
>>> x
{'username': 'admin', 'machines': ['foo', 'baz']}
如你所见,当替换副本中的值时,原件不受影响。然而,如果修改副本中的值(就地修改而 不是替换),原件也将发生变化,因为原件指向的也是被修改的值(如这个示例中的'machines' 列表所示)。 为避免这种问题,一种办法是执行深复制,即同时复制值及其包含的所有值,等等。为此, 可使用模块copy中的函数deepcopy。
>>> from copy import deepcopy
>>> d = {}
>>> d['names'] = ['Alfred', 'Bertrand']
>>> c = d.copy()
>>> dc = deepcopy(d)
>>> d['names'].append('Clive')
>>> c
{'names': ['Alfred', 'Bertrand', 'Clive']}
>>> dc
{'names': ['Alfred', 'Bertrand']}
三个资料Q群下载不了也转发不了,先放这里Fine_tuning.zipLangChain.zipdata_clear.rar