3

(Python 2.7.2)キーにマップされた値が0のときに、辞書の.get()メソッドを使用してキーを検索すると、デフォルト値が返される理由をよりよく理解したいと思います。

次のことを考慮してください

x = {1:0}

print x.get('1', 'a')

'a'

空の文字列、セットなどでも同じことが起こります。

しかし、私がそうする場合:

print x[1]
0

このメソッドは、aが発生した場合と、返される値が0または空のセットの場合の両方を.get()返しますか?default valuekeyError

dictオブジェクトが不変であり、に格納されている値をポイントすると、key = 1Falseに等しいオブジェクトへの参照が渡されるという事実と関係がありますか?

私は自分自身のgetメソッドを書くことができることを知っています

def get(key, default=None):
    try: return x[key]
    except KeyError: return default

しかし、私はその方法をもっと深く理解したいと思い.getます。

4

2 に答える 2

10

1!= '1'; anintは。と等しくありませんstr

>>> x = {1:0}
>>> 
>>> print x.get('1', 'a')
a
>>> print x.get(1, 'a')
0
于 2012-12-27T01:16:41.760 に答える
4

あなたは最初の実験で間違いを犯しました:

>>> x = {1: 0}
>>> x.get('1', 'a')
'a'
>>> x.get(1, 'a')
0

Python では、dict キーは、文字列だけでなく、任意のハッシュ可能な型にすることができます。

于 2012-12-27T01:17:05.667 に答える