2014-11-17 64 views
0

我試圖在執行拷貝時同時使用其中一個鍵值對來拷貝字典。我認爲這是可能的,但這是行不通的。有沒有辦法做到這一點?使用字典理解使用python覆蓋鍵值對時的淺拷貝字典

b_dict = dict(a_dict) 
b_dict["foo"] = "cat" 

你也可以做到一步到位:

a_dict = {'foo' : 'bar', 'bah' : 'baz'} 
b_dict = dict(a_dict, 'foo' : 'cat') 

desired result of b_dict = {'foo' : 'cat', 'bah' : 'baz'} 

回答

1

你爲什麼不這樣做兩步

b_dict = {key: "cat" if key == "foo" else value for key, value in a_dict.iteritems()} 

但不會對於一本非常大的字典是有效的。

+0

是的,我應該補充說我目前正在做兩個步驟,但是認爲Python在複製操作過程中有一種輕鬆的方法。欣賞你的詞典理解答案。 – Michael

0

是的,使用copy是比較好的方法。

a_dict = {'foo' : 'bar', 'bah' : 'baz'} 
b_dict = a_dict.copy() 
b_dict.update({'foo' : 'cat'}) 

print(b_dict) # {'bah': 'baz', 'foo': 'cat'} 
print(a_dict) # {'bah': 'baz', 'foo': 'bar'}