(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
方法有更深入的了解。
答案 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键可以是任何可散列类型,而不仅仅是字符串。