2014-06-10 92 views
0

在以下代碼中,我製作了_data字典的深層副本,以便我不更改原始內容。
我的問題是如何從變量my_str 即得到新版本v7my_str應指向我v7而不是v6了。我想使用相同的變量my_str而不是構建一個新的。python字典使用格式解析並獲取新數據

_data = {"version":"v6"} 
my_str = "{version}".format(**_data) 
import copy 

new_data = copy.deepcopy(_data) 
new_data["version"] = "v7" 

print(my_str) # I expected "v7" and not "v6" here 
+0

我認爲你是比較混亂的一些事情......你設置my_dict的方式使其成爲一個字符串,而不是字典 – MultiVAC

+0

,如果你正在從_data,永遠不會改變的價值,你就必須要使用** new_data –

回答

2

是絕對沒有理由你應該有'預期 「V7」,而不是 「V6」'

my_dict不是字典;這是一個字符串:

>>> _data = {"version":"v6"} 
>>> my_dict = "{version}".format(**_data) 
>>> my_dict 
'v6' 
>>> type(my_dict) 
<type 'str'> 

my_dict_data之間沒有連接,並且字符串是不可變的(不能就地進行更改)。即使有兩者之間的某種魔術連接,在更新它之前,您有意製作new_data副本_data,這會刪除該連接。

沒有辦法「更新」 my_dict,你必須從新,改變字典創建一個新的字符串:

my_dict = "{version}".format(**new_data) 

或者爲什麼不訪問的價值?

new_data['version'] 
+0

正如我已經告訴你,我現在想要構建一個新的字符串,我只想進入變量 – Rajeev

+1

@Rajeev,正如我已經告訴過你,沒有辦法做到這一點。我的答案的某些部分不清楚嗎? – jonrsharpe