2017-03-13 12 views
0

変数a = 42を定義し、それを辞書di = {a: 'fourty-two'}に渡します。 Pythonはdiのキーをどのように読んでいますか?
aは、aという変数または数値を指していますか?変数が辞書のキーとして渡されます

キーが一部の数値を参照しているだけの場合は、はキーを変更します(a = 10)。di
誰かが私にそれを明確にすることができますか?
ありがとうございます!

編集:私は10に変数aの値を変更すると
、なぜdiのキーが辞書に

+2

何が起こったのか試してみましたか? –

+1

'x'ではなく' a'を意味しますか? – Carcigenicate

+0

「*辞書に渡す」という意味はありませんか?どのようにそれを渡すのですか? –

答えて

0

キーは不変で変更されません。それらを変えることはできません。 考えてみましょう:

>>> a = 42 
>>> di = {a:'forty-two'} 
>>> di 
{42: 'forty-two'} 

辞書自体は単にキーとして42を持っています。辞書を設定するのにaを使用したという事実は全く無関係です。同様に、aが42なので、b = a + 1と書くと、b43となり、後でa10に変更すると、この事実は変更されません。その場合bは魔法のように11になりません。

新しい番号にaを結合して、キーとしてその新しい番号を使用したい場合は、手動で辞書を変更する必要があります:

>>> old_a = a #store old value of a 
>>> a = 10 #assign new value to a 
>>> di[a] = di[old_a] #assign value to new key 
>>> del(di[old_a]) #delete old key-value pair 
>>> di 
{10: 'forty-two'} 

これにISNことを示唆している、やや複雑です非常に無色であり、あなたがしようとしていることは何でも行うためのより良い方法があるだろう。

編集上のキーを交換するプロセスはŁ[email protected]として、.pop()を使用して合理化することができますが、上記のコメントで指摘:

old_a = a 
a = 10 
di[a] = d.pop(old_a) 

このように自動的に割り当てるプロセスで古いキーを削除します新しいキーへのその値。

+0

ありがとうございました! これは役に立ちますが、私が使用するコードはちょっと複雑ですし、正反対です( 'a'は' a.append() 'によって変更され、' a'にバインドされたものもすべて変更されます) – SevO

+0

'a'が参照する場合リストは辞書のキーを作成するために使用することはできません。 –

+0

私が言ったように、それは少し複雑です。リストをキーとして使用する場合、そのリストのハッシュを作成するためにクラスを使用します。 – SevO

関連する問題