我有一个以整数为键的字典,值是列表内的所有整数。我将变量设置为等于其中一个值,但是如果我从变量列表中的整数减去1,那么它也会从字典中值的列表中的整数减去1。
mydictionary = {1: [10]}
variable0 = mydictionary[1]
variable0[0] -= 1
print(mydictionary)
这将打印出来
{1: [9]}
何时应该打印出
{1: [10]}
因为我从未更改过字典中的值,所以只更改了变量。
为什么会发生这种情况,有没有办法在更改变量的同时将其打印出来{1:[10]}?
答案 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设置为一个新值,该值与字典中的值相同。这是两个相同的值,改变一个值不会像以前一样改变另一个值。