我正在学习python,而且我对元组有困惑。如果元组中的元素是不可变的,那么我怎样才能更改元组中存在的字典值?
E.g。
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)
提前致谢。
答案 0 :(得分:2)
请记住,python中的每个值都是对对象的引用。
因此,不要将你的元组视为一个dicts元组,而是将其视为一个对某些事物的引用的元组,其中那些东西是dicts 。情况并非如此,那些dicts in 元组。它们独立存在,元组的元素引用给它们。
现在,以这种方式思考,元组是不可变的。您无法更改其结构/大小,也无法更改其元素,这意味着您无法将一个引用替换为另一个引用。
但是,所引用的对象可以是可变的。它们独立存在,无论元组是否被提及。
如果元组中的元素是不可变的,那我怎么能改变它们呢?
他们不是一成不变的。元组是。
答案 1 :(得分:1)
你的元组只有一个dict的引用,它无法跟踪你对它里面的东西所做的任何改变(怎么会这样?)。
通过不变性,它了解到你无法做到这一点:
test_tup[0] = {}
这是更改元组所持有的引用。