2015-12-31 54 views
2

我正在學習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) 

感謝。

回答

2

請記住,python中的每個值都是對對象的引用。

因此,而不是想着你的元組爲類型的字典的元組,例如,把它當做至出頭,在那些出頭的類型的字典引用的元組。情況並非如此,元組內的。它們自己存在,並且元組的元素參考給他們。

現在,考慮這種方式,元組是不可變的。您無法更改其結構/大小,也無法更改其元素,這意味着您無法用一個參考替換另一個參考。

但是,被引用的對象可以是可變的。無論是否被元組引用,它們都是獨立存在的。

如果元組中的元素是不可變的,那我怎麼能改變它們呢?

它們不是不可變的。元組是。

1

你的元組只包含對字典的引用,它不能跟蹤你對其中的東西所做的任何修改(它會怎樣?)。

通過更改的,它明白,你不能做到這一點:

test_tup[0] = {} 

這是改變基準的元組成立。

+0

這意味着您可以更改字典中某個鍵的值,但不能將字典本身更改爲空字典。 – uniXVanXcel

相關問題