两个dicts One Val

时间:2018-01-18 07:33:10

标签: python python-3.x dictionary

我正在使用python 3.5,请解释代码结果:

@CachePut(value = "cache1", key = "#clientId")
public Map<String, Object> buildCache(Long clientId){
Map<String, Object> cacheMap= new HashMap<String, Object>();
//get values from remote db and store them in the local db as well as cache
return cacheMap;
}

@Cacheable(value = "cache1", key = "#clientId")
public Map<String, Object> getFromCache(Long clientId){
     //get from local db
}

为什么在这段代码之后dict1 ['a']值变成'少于两个'?

2 个答案:

答案 0 :(得分:1)

在python中,一切都是对象。当您编写dict1 = {}时,您正在做的是将字典对象的实例分配给空dict()到名为dict1的对象。但是当您编写此行dict2=dict1时,您告诉python将对象dict2分配为引用完全相同的对象dict1。意味着发生在一个人身上的任何变化都会发生在另一个人身上。

你想要做的是写dict2 = dict(dict1),它告诉python dict2是一个字典对象的新实例,它与dict1的值相同。现在当你改变一个值时,它不会影响另一个。

答案 1 :(得分:0)

修改

bruno desthuilliers评论是最好的答案

结束修改

几乎所有语言中的

对象都相同,当你设置dict2 = dict1时,它们在内存中是相同的

如果你想创建coppy你必须在python中创建 shalowcopy deepcopy

dict2 = dict(dict1) # create a copy of dict1

x = {}

y=x # this make y pointer to x and two are one