向字典插入值而不只是创建引用

-2 投票
5 回答
9615 浏览
提问于 2025-04-16 09:21

有没有办法把一个字典放进另一个字典里,而不是仅仅创建一个指向那个字典的引用?比如说:

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 会进行浅拷贝。

撰写回答