为什么我们可以更改元组中的字典值?
Why can we change a dictionary value inside a tuple?
我正在学习 python,但我对元组感到困惑。如果元组中的元素不可变,那么我如何才能更改元组中存在的字典值?
例如
test_dict = {'a':2,'b':3}
test_tup = (test_dict,3)
test_tup[0]['b'] = 4
如果我打印 test_tup
,则 b
值更新为 4:
>>> test_tup
({'a': 3, 'b': 4}, 3)
提前致谢。
请记住,python 中的每个值都是 对对象的引用。
因此,与其将您的元组视为 字典的元组 ,不如将其视为 对某物的引用的元组 ,其中那些东西是字典。字典不是 inside 元组的情况。它们独立存在,元组的元素引用它们。
现在,这样想,元组是不可变的。您无法更改其 structure/size,也无法更改其元素,这意味着您无法将一个引用替换为另一个引用。
但是,所引用的对象可以是可变的。它们独立存在,与元组引用无关。
If elements in tuple are immutable, then how am I able to change them?
它们不是一成不变的。元组是。
你的元组只包含对字典的引用,它无法跟踪你对其中的内容所做的任何更改(它会怎样?)。
根据不变性,您不能这样做:
test_tup[0] = {}
这是更改元组持有的引用。
我正在学习 python,但我对元组感到困惑。如果元组中的元素不可变,那么我如何才能更改元组中存在的字典值?
例如
test_dict = {'a':2,'b':3}
test_tup = (test_dict,3)
test_tup[0]['b'] = 4
如果我打印 test_tup
,则 b
值更新为 4:
>>> test_tup
({'a': 3, 'b': 4}, 3)
提前致谢。
请记住,python 中的每个值都是 对对象的引用。
因此,与其将您的元组视为 字典的元组 ,不如将其视为 对某物的引用的元组 ,其中那些东西是字典。字典不是 inside 元组的情况。它们独立存在,元组的元素引用它们。
现在,这样想,元组是不可变的。您无法更改其 structure/size,也无法更改其元素,这意味着您无法将一个引用替换为另一个引用。
但是,所引用的对象可以是可变的。它们独立存在,与元组引用无关。
If elements in tuple are immutable, then how am I able to change them?
它们不是一成不变的。元组是。
你的元组只包含对字典的引用,它无法跟踪你对其中的内容所做的任何更改(它会怎样?)。
根据不变性,您不能这样做:
test_tup[0] = {}
这是更改元组持有的引用。