为什么我只给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.9k 阅读✓ 已解决
2 回答1k 阅读✓ 已解决
3 回答1k 阅读✓ 已解决
4 回答825 阅读✓ 已解决
3 回答1.1k 阅读✓ 已解决
1 回答1.6k 阅读✓ 已解决
1 回答1.1k 阅读✓ 已解决
所有的5个元素的值都是v,而v作为复杂类型,这里是传引用而非传值。