3

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

考虑以下

x = {1:0}

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

'a'

空字符串、集合等也会发生同样的情况。

但如果我这样做:

print x[1]
0

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

是否与 dict 对象是不可变的事实有关,并且当我指向存储在 上的值时key = 1,我得到了一个对等于 False 的对象的引用。

我知道我可以编写自己的 get 方法来执行

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

但我想对该.get方法有更深入的了解。

4

2 回答 2

10

1 != '1'; an int isn't equal to a str.

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

You made mistake in your first experiment:

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

In Python, dict keys can be any hashable type, not just strings.

于 2012-12-27T01:17:05.667 回答