2017-08-20 16 views
1

私のコードを修正するにはあなたの助けが必要です。私は辞書のリストに値を追加しようとしています。Python - 辞書に登録する値を挿入する

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]} 

Iは、ノード1とarrCH内のすべてのノードとの間の距離を計算し、次に最小距離を取ることを試みます。出力では、arrEの結果は[349,3460]であり、最小値は349です。349はインデックス0を持ち、インデックス0のarrCHはarrCH [0] = 23が好きです。最後に、私は更新したいdicCH [23] .append(1)その結果は

{35: [], 23: [1]} 

しかしである、なぜ私のコード更新すべてのキー、35と23?

誰かが私を助けてくれることを願っています。 はありがとう..

答えて

0

classmethod fromkeys(seq[, value])

seqからキー とvalueに設定された値を持つ新しい辞書を作成します。

辞書の値のすべては、あなたがfromkeys関数にvalueとして提供同じ単一のリストインスタンス([])を参照します。

this answerのようにdictionary comprehensionを使用できます。

dicCH = {key: [] for key in arrCH} 
関連する問題