2017-11-29 5 views
0
dictOne = {'a':1, 'b':2} 
dictTwo = {'aa':dictOne['a'], 'bb':dictOne['b']} 

print(dictTwo['aa'] 
# returns 1 

への変更を登録しません。第二のdictは最初

print(dictTwo['aa']) 
# returns 1 

ここで何が起こっているか私はこれが何とかdictの不適切な使い方だと確信していますが、私は即座にこれを解決する必要があります。ありがとう。

答えて

0

あなたは問題の詳細を知らなくてもpython FAQ on pass by assignment

を読んで、いくつかの値を見つけることができ、コード

dictTwo = {'aa':dictOne['a']} 

の下の部分に「」dictOne内部キーから値を抽出していますこれをどのように解決できるかを正確に言うのは難しいです。あなたは、キーの異なるセット間のマッピングを作成する必要がある場合は、のような何かをするためのオプションがあります:多分あなたが探しているものが

dictTwo = {'aa' : 'a', 'bb' : 'b'} 
dictOne[dictTwo['aa']] 

multi key dict

+0

は、リンクいただきありがとうございます。私はこの問題をさらに詳しく見ていきます。 – micahel

0

ここライン:

dictOne['a']以来
dictTwo = {'aa':1, 'bb':2} 

dictOne['b']両方が不変の値(整数)を返し、それらをコピーすることにより、およびない参照によって渡されます

dictTwo = {'aa':dictOne['a'], 'bb':dictOne['b']} 

は以下と等価です。しかし、彼らは同じキー値を持つことになり、

How do I pass a variable by reference?あなたはまたdictTwoを更新してしまうdictOneを更新し、dictTwo = dictOneを行っていた参照してください。

関連する問題