【问题标题】:Is there any way i can pass in only the values of a list to a dictionary and not the reference of the list?有什么方法可以只将列表的值传递给字典而不是列表的引用?
【发布时间】:2019-10-27 22:52:52
【问题描述】:

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

*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]

【问题讨论】:

  • 可以使用*解包列表

标签: python list dictionary reference


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

    在将列表添加到字典之前创建一个副本:

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-10-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-11-21
      • 2015-01-01
      相关资源
      最近更新 更多