sat*_*nam 5 python hash dictionary pass-by-reference defaultdict
所以说我有一个字典,其默认值是另一个字典
attributes = { 'first_name': None, 'last_name': None, 'calls': 0 }
accounts = defaultdict(lambda: attributes)
Run Code Online (Sandbox Code Playgroud)
问题是我传递给defaultdict(属性)的默认字典作为引用传递.我如何将其作为值传递?因此,更改一个键中的值不会更改其他键中的值
例如 -
accounts[1]['calls'] = accounts[1]['calls'] + 1
accounts[2]['calls'] = accounts[2]['calls'] + 1
print accounts[1]['calls'] # prints 2
print accounts[2]['calls'] # prints 2
Run Code Online (Sandbox Code Playgroud)
我希望他们每个人都打印1,因为我只增加了他们各自的"调用"值一次.
尝试:
accounts = defaultdict(attributes.copy)
Run Code Online (Sandbox Code Playgroud)
因为Python 3.3 lists小号也有copy方法,这样你就可以如上面使用同样的方式defaultdict■当你需要一个字典与列表作为默认值.