向字典插入值而不只是创建引用
有没有办法把一个字典放进另一个字典里,而不是仅仅创建一个指向那个字典的引用?比如说:
dict_a = {}
dict_b = {}
dict_a.insert(key, value)
这样做可以避免一些由此带来的问题。
dict_a["somekey"] = dict_b
5 个回答
1
你需要做一个复制:
dict_a["dsomekey"] = dict_b.copy()
编辑:没有字典的方法可以按值插入。Python 的字典总是使用引用。
2
是的。
dict_a.update(dict_b)
这段代码会把dict_b
里的所有键和值都插入到dict_a
里面(注意:这个操作是在原地进行的,返回的结果是None
)
4
你可以对 b 使用 copy.deepcopy:
>>> a = {'a':[1,2,3]}
>>> b = {'b':[4,5,6]}
>>> a['c'] = copy.deepcopy(b)
>>> a
{'a': [1, 2, 3], 'c': {'b': [4, 5, 6]}}
>>> b
{'b': [4, 5, 6]}
>>> b['b'].append(7)
>>> b
{'b': [4, 5, 6, 7]}
>>> a
{'a': [1, 2, 3], 'c': {'b': [4, 5, 6]}}
像上面那样使用 update 或 copy 会进行浅拷贝。