【发布时间】:2023-01-05 17:34:49
【问题描述】:
我编写了一个函数,将所有值从字典中收集到一个列表中,其中每个值都是一个列表。但是,后来我修改那个列表的时候,发现我原来的字典也被修改了!
from functools import reduce
d = {'foo': [1,2,3]}
all_vals = reduce(lambda x, y: x + y, d.values()); all_vals
all_vals.append(4)
print(d)
# {'foo': [1, 2, 3, 4]}
如果字典有多个键/值,则不会发生这种情况:
from functools import reduce
d = {'foo': [1,2,3], 'bar': [9]}
all_vals = reduce(lambda x, y: x + y, d.values()); all_vals
all_vals.append(4)
print(d)
# {'foo': [1, 2, 3], 'bar': [9]}
字典现在保持不变。谁能解释为什么 python 有这种行为?
【问题讨论】:
标签: python