Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 将变量集更改为字典中的值会更改字典值吗?_Python_Python 3.x_Dictionary - Fatal编程技术网

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

Python 将变量集更改为字典中的值会更改字典值吗?,python,python-3.x,dictionary,Python,Python 3.x,Dictionary,我有一个以整数为键的字典,值都是列表中的整数。我将一个变量设置为等于其中一个值,但如果我从变量列表中的整数中减去一,它也会从字典中的值列表中的整数中减去一 mydictionary = {1: [10]} variable0 = mydictionary[1] variable0[0] -= 1 print(mydictionary) 这是打印出来的 {1: [9]} 什么时候应该打印出来 {1: [10]} 因为我从未更改字典中的值,所以只有变量 为什么会发生这种情况?有没有办法在更改变

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

mydictionary = {1: [10]}
variable0 = mydictionary[1]
variable0[0] -= 1
print(mydictionary)
这是打印出来的

{1: [9]}
什么时候应该打印出来

{1: [10]}
因为我从未更改字典中的值,所以只有变量


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

虽然更改了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]}


干杯

发现字典中的列表是一个值,字典和变量都引用该值。字典和变量是程序引用该值的唯一方法。您必须通过字典或变量来更改值,一旦更改,字典和变量仍然引用该值

我通过遍历变量从中减去一来改变值。
然后,当我浏览字典时,我访问相同的值

mydictionary = {1: [10]}
variable0 = mydictionary[1]
variable0[0] -= 1
print(mydictionary)
这意味着字典正在访问由变量更改的值。整个程序中只有一个值


我还可以将代码更改为

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

这将variable0设置为与字典中的值相同的新值。这是两个不同的值,它们相等于同一事物,改变一个值不会改变另一个值。

您的期望是错误的,请阅读此内容。您正在对字典中的列表进行变异,赋值从不复制数据。您正在通过列表订阅更新列表中项目的值。很难说为什么你会期望这会有不同的表现。请参阅。您应该将列表中的值分配给一个新变量,然后更新:
variable0=mydictionary[1][0];variable0-=1
这里没有JSON对象。我不知道你的答案如何解决他们的问题;这条线解决了这个问题。我将Python dict称为JSON对象。感谢您通知错误。