Python - 将值插入字典中的列表

时间:2017-08-20 07:21:42

标签: python-3.x dictionary

我需要你的帮助来修复我的代码。我尝试将值附加到字典中的列表中。

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?

我希望有人可以帮助我。 谢谢..

1 个答案:

答案 0 :(得分:0)

  

classmethod fromkeys(seq[, value])

     

使用键创建新词典   来自seq,值设置为value

您的所有词典值都引用了您作为[] value函数提供的同一个列表实例(fromkeys)。

您可以使用dictionary comprehension中的this answer

dicCH = {key: [] for key in arrCH}