2017-11-18 10 views
0

Pythonシェルに式{1: 'a', True: 'b', 1.0: 'c', 1.00: 'd'}を入力すると、私は{1: 'd'}に戻ります。しかし、私が{1: 'a', True: 'b', 1.0: 'c', 1.00: 'd'} [True]と書くと、通訳者は私に'd'を返します。この辞書評価の仕組みは分かりません。"{1: 'a'、True: 'b'、1.0: 'c'、1.00: 'd'}"は "{1: 'd'}"と評価されますか?

+1

辞書のキーは一意でなければなりません。同じキーを使用する場合は、最後のキーだけが残ります。 – eyllanesc

答えて

3

Pythonは==演算子と同じ平等テストを使用します。使用しているすべてのキー(1True1.0、および1.00)は、互いに等しいと比較されます。あなたの言葉で起こっていることは、最初のキーを保持していて、そのキーに関連付けられた値をそれに等しいすべての後続キーについて更新することです。キー値が同じではないため(1.01.00を除く)、これらは「等しい」ため、少し直感的ではありません。

同様に、{1: 'd'}[True]は、True == 1であるため、'd'と評価されます。

+0

ありがとう!私はcsvファイルを解析していたので、私は辞書に値が混在してしまったので、これについて本当に混乱しました。私はそれを '{1: 'a'、True: 'b'、1.0: 'c'、1.00: 'd'}'にしました。 –

1

値1、True、1.0および1.00はすべて等しい(1.0と1.00はまったく同じ値です)。したがって、それらはすべて辞書内の同じキーと見なされます。複数の等しいキーを持つdictを持つことはできません。

1

Pythonは辞書の重複キーをサポートしていません。

この例では、すべてのキーは同じです(True==1Trueと評価されます)。
したがって、Pythonは最後のものを除くすべてのキー値を破棄します。

関連する問題