为什么我只给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 回答968 阅读
1 回答710 阅读
1 回答692 阅读
1 回答521 阅读
645 阅读
585 阅读
567 阅读
所有的5个元素的值都是v,而v作为复杂类型,这里是传引用而非传值。