为什么我只给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
什么的就不太想用了
2 回答4.2k 阅读✓ 已解决
2 回答838 阅读✓ 已解决
1 回答4.1k 阅读✓ 已解决
3 回答830 阅读✓ 已解决
2 回答2.1k 阅读✓ 已解决
4 回答2.5k 阅读
3 回答872 阅读✓ 已解决
所有的5个元素的值都是v,而v作为复杂类型,这里是传引用而非传值。