2つの辞書オブジェクトを1対1の対応で比較したいと思います。 dict f
に更新がある場合はdict fa
と比較する必要があります。しかし私のコードでは、私がdict f
を更新すると、dict fa
も更新されます。したがって、値は加算されますが、これは比較のためには意味がありません。誰も私にこれを助けることができますか?Python辞書の値の問題
def tym_save(node_add, data, f, fa, f2):
if str(node_add) in f:
# check for the older value
f2 = tym_check(f[str(node_add)],fa[str(node_add)],f2)
else:
f[str(node_add)] = data
fa = f
print 'f-> ', f, 'fa-> ', fa
return f, fa, f2
def tym_check(f_list,fa_list,f2_list):
for i in range(len(f_list)):
if f_list[i] > fa_list[i]:
fa_list[i] = f_list[i]
else:
print f_list, fa_list, f2_list
f2_list[i] = fa_list[i]
f_list[i] = f_list[i] + f2_list[i]
print f_list, fa_list,f2_list
print 'yo'
return f2_list
if __name__ == '__main__':
f = {}
fa = {}
f2 = [0,0,0,0]
add = '0013a2'
data = [1.0, 0.0, 0.342, 0.3]
f, fa, f2 = tym_save(add, data, f, fa,f2)
data = [2.0, 1.0, 0.342, 0.3]
f[str(add)] = data
## Here the fa is also updating.
f, fa, f2 = tym_save(add, data, f, fa,f2)
add = '0013a2'
data = [0.0, 0.0, 0.0, 0.0]
f, fa, f2 = tym_save(add, data, f, fa,f2)
「fa = f」とは何でしょうか?実際に 'f 'と呼ばれる辞書への2番目の参照を作成しています。 –
@ TadhgMcDonald-Jensen実際には、' f'は次に値が異なる 'f'を走査するために使われます。 'fa = f'という代入は' f ['0013a200'] 'にデータがないときの状態です。 – abhi1610
はい、同じオブジェクトへのポインタとして割り当てているため、両方を更新しているようです。 –