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

时间:2012-12-27 01:14:38

标签: python dictionary

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

考虑以下

x = {1:0}

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

'a'

对于空字符串,集合等也是如此。

但如果我这样做:

print x[1]
0

.get()方法在引发default value时返回keyError并且返回的值是0还是空集?

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

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

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

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

2 个答案:

答案 0 :(得分:10)

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

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

答案 1 :(得分:4)

你在第一次实验中犯了错误:

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

在Python中,dict键可以是任何可散列类型,而不仅仅是字符串。