为什么我只给d[1]的列表append了一个字典,而结果是给每一个值都添加了?
因为 []
只会被初始化一次,然后所有的key都会引用到它,也就是浅拷贝
, 可以换种方式实现:
第一种:
in python3
d = {i: [] for i in range(5)}
d[1].append({'k': 'v'})
第二种:
from collections import defaultdict
d = defaultdict(list)
d[1].append({'k': 'v'})
copy.deepcopy
什么的就不太想用了
4 回答4.4k 阅读✓ 已解决
4 回答3.8k 阅读✓ 已解决
1 回答3k 阅读✓ 已解决
3 回答2.1k 阅读✓ 已解决
1 回答4.5k 阅读✓ 已解决
1 回答3.8k 阅读✓ 已解决
1 回答2.8k 阅读✓ 已解决
所有的5个元素的值都是v,而v作为复杂类型,这里是传引用而非传值。