我需要你的帮助来修复我的代码。我尝试将值附加到字典中的列表中。
def distance(x1, y1, x2, y2):
dis=((x1-x2)**2) + ((y1-y2)**2)
return dis
def cluster_member_formation2(arrCH, arrN, k):
dicCH = dict.fromkeys(arrCH,[])
arrE = []
for j in range(len(arrCH)):
d_nya = distance(arrN[1][0], arrN[1][1], arrN[arrCH[j]][0], arrN[arrCH[j]][1])
arrE.append(d_nya)
minC = min(arrE)
ind = arrE.index(minC)
x = arrCH[ind]
dicCH[x].append(1)
print(arrE, minC, ind, x, dicCH)
arrCH=[23, 35]
arrN={0:[23, 45, 2, 0], 1:[30,21,2,0], 23:[12, 16, 2, 0], 35:[48, 77, 2, 0]}
cluster_member_formation2(arrCH, arrN, 1)
输出:
[349, 3460] 349 0 23 {35: [1], 23: [1]}
我尝试计算节点1和arrCH中所有节点之间的距离,然后取最小距离。在输出显示arrE的结果是[349,3460],所以最小值是349. 349有索引0,然后我找到索引为0的arrCH,喜欢arrCH [0] = 23。最后,我想更新dicCH [23] .append(1),结果是
{35: [], 23: [1]}
但是,为什么我的代码会更新所有密钥,35和23?
我希望有人可以帮助我。 谢谢..
答案 0 :(得分:0)
classmethod fromkeys(seq[, value])
使用键创建新词典 来自
seq
,值设置为value
。
您的所有词典值都引用了您作为[]
value
函数提供的同一个列表实例(fromkeys
)。
您可以使用dictionary comprehension中的this answer。
dicCH = {key: [] for key in arrCH}