Python使用dict .get()方法,其中value = 0

jug*_*ich 3 python dictionary

(Python 2.7.2)我想更好地理解为什么在映射到键的值为0时使用字典.get()方法查找键时返回默认值.

考虑以下

x = {1:0}

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

'a'
Run Code Online (Sandbox Code Playgroud)

对于空字符串,集合等也会发生同样的情况.

但如果我这样做:

print x[1]
0
Run Code Online (Sandbox Code Playgroud)

当a 被引发并且返回的值是0还是空集时,该.get()方法是否返回default value两者keyError

是否与dict对象是不可变的事实有关,当我指向存储的值时key = 1,我会传递对等于False的对象的引用.

我知道我可以写自己的get方法

def get(key, default=None):
    try: return x[key]
    except KeyError: return default
Run Code Online (Sandbox Code Playgroud)

但我希望对该.get方法有更深入的了解.

DSM*_*DSM 10

1!= '1'; a int不等于a str.

>>> x = {1:0}
>>> 
>>> print x.get('1', 'a')
a
>>> print x.get(1, 'a')
0
Run Code Online (Sandbox Code Playgroud)

  • 请注意,由于相同的`hash()`值,字典将`1`和`1.0`视为相同的键,因此`x [1]`和`x [1.0]`是等价的. (2认同)