有什么方法可以仅将列表的值传递给字典,而不能将列表的引用传递给字典?

时间:2019-10-27 22:52:52

标签: python list dictionary reference

我有什么办法可以只将列表的值传递给字典,而不能将列表的引用传递给字典?

*my_list = [1, 2, 3]
my_dict = {"list": my_list}
print(my_dict["list"])
my_list.pop()
print(my_dict["list"])*

当前输出为: [1,2,3] [1,2]

我希望它是: [1,2,3] [1、2、3]

2 个答案:

答案 0 :(得分:0)

您应该使用字典中的原始列表值创建一个新列表,这样当您从my_list弹出时,该列表就不会发生变异。

my_dict = {"list": [item for item in my_list]}

答案 1 :(得分:0)

创建列表的副本,然后将其添加到字典:

my_dict = {'list': list(my_list)}

正在发生的情况是my_dict['list']所指的是与my_list相同的值,而不是它的副本,即共享数据。由于.pop()破坏性地修改了列表,因此元素也丢失在变量中。

有关复制列表的方法的概述,请参见https://stackoverflow.com/a/2612815/10973209,有关引用传递与值传递的一般说明,请参见https://stackoverflow.com/a/430958/10973209