I c'ant使用.append()通过python将值附加到字典中
我想在字典的第2位加上17。当我运行这段代码时,17无处不在I c'ant使用.append()通过python将值附加到字典中,python,python-3.x,dictionary,append,Python,Python 3.x,Dictionary,Append,我想在字典的第2位加上17。当我运行这段代码时,17无处不在 dic = dict.fromkeys(range(4), []) print("dic begin : ", dic) dic[1].append(17) print("dic end : ", dic) 我得到这个输出: 'dic begin:',{0:[],1:[],2:[],3:[] 'dic end:',{0:[17],1:[17],2:[17],3:[17]} 我做错了什么?因此,当您使用dict.fromkeys
dic = dict.fromkeys(range(4), [])
print("dic begin : ", dic)
dic[1].append(17)
print("dic end : ", dic)
我得到这个输出:
'dic begin:',{0:[],1:[],2:[],3:[]
'dic end:',{0:[17],1:[17],2:[17],3:[17]}
我做错了什么?因此,当您使用dict.fromkeyskeys,value方法时,只传递值的引用!所以当你变异一个的时候,所有的人都会变异。你可以用这个-
dic = {i:[] for i in range(4) }
print("dic begin : ", dic)
dic[1].append(17)
print("dic end : ", dic)
出去-
通过将列表构造函数传递给dict.fromkeys,您将为每个键提供与其值相同的列表,从而可能复制。您可能更愿意使用此选项来回答您的问题吗?
dic begin : {0: [], 1: [], 2: [], 3: []}
dic end : {0: [], 1: [17], 2: [], 3: []}