将变量集更改为词典中的值会更改词典值吗?

时间:2018-08-13 10:16:21

标签: python python-3.x dictionary

我有一个以整数为键的字典,值是列表内的所有整数。我将变量设置为等于其中一个值,但是如果我从变量列表中的整数减去1,那么它也会从字典中值的列表中的整数减去1。

mydictionary = {1: [10]}
variable0 = mydictionary[1]
variable0[0] -= 1
print(mydictionary)

这将打印出来

{1: [9]}

何时应该打印出

{1: [10]}

因为我从未更改过字典中的值,所以只更改了变量。

为什么会发生这种情况,有没有办法在更改变量的同时将其打印出来{1:[10]}?

2 个答案:

答案 0 :(得分:0)

尽管您更改了JSON对象的值,但尚未覆盖JSON中的值。

mydictionary = {1: [10]}
variable0 = mydictionary[1]
variable0[0] -= 1
mydictionary[1] = [variable0[0]] # here you are overwriting the value
print(mydictionary)

现在输出将为{1: [9]}

干杯!

答案 1 :(得分:0)

事实证明,字典中的列表是一个值,并且字典和变量都引用该值。字典和变量只是程序引用该值的方式。您必须浏览字典或变量才能更改该值,并且一旦更改,字典和变量仍将引用该值。

我通过在变量中减去一个值来更改该值。
然后,当我浏览字典时,我将访问相同的值。

这意味着词典正在访问由变量更改的值。在整个程序中只有一个值。


我也可以将代码更改为

PATIENT_URL_SEGMENTS

这会将variable0设置为一个新值,该值与字典中的值相同。这是两个相同的值,改变一个值不会像以前一样改变另一个值。