This question already has answers here:
List of lists changes reflected across sublists unexpectedly
                                
                                    (13个回答)
                                
                        
                                去年关闭。
            
                    
>>> keys = [1, 2, 3]
>>> d = dict(zip(keys, [[]]*len(keys)))
>>> d
{1: [], 2: [], 3: []}
>>> d[1].append(100)
>>> d
{1: [100], 2: [100], 3: [100]}


甚至复制[]也无效:


dict(zip(keys,[[] [:]] * len(keys)))
dict(zip(键,[copy.deepcopy([])] * len(keys)))


{1:[100],2:[],3:[]}是我想要的。

最佳答案

尝试list comprehension

keys = [1, 2, 3]
d = dict(zip(keys, [[] for _ in keys]))
d[1].append(100)


根据abarnert的评论,您可以使用dictionary comprehension使代码更简单:

keys = [1, 2, 3]
d = {key:[] for key in keys}
d[1].append(100)


使用这两个选项调用d会给出以下输出:

{1: [100], 2: [], 3: []}

10-07 19:51
查看更多