Python使用dict.get()方法,其中value=0
(Python 2.7.2) 我想更好地理解,当映射到键的值为0时,为什么使用dictionaries.get()方法查找键时会返回默认值 考虑以下几点Python使用dict.get()方法,其中value=0,python,dictionary,Python,Dictionary,(Python 2.7.2) 我想更好地理解,当映射到键的值为0时,为什么使用dictionaries.get()方法查找键时会返回默认值 考虑以下几点 x = {1:0} print x.get('1', 'a') 'a' 空字符串、集合等也会发生同样的情况 但如果我这样做: print x[1] 0 .get()方法是否在引发keyError时返回默认值,以及返回的值是否为0或空集 它与dict对象是不可变的这一事实有关,并且当我指向存储在key=1上的值时,传递给我的对象引用等于F
x = {1:0}
print x.get('1', 'a')
'a'
空字符串、集合等也会发生同样的情况
但如果我这样做:
print x[1]
0
.get()
方法是否在引发keyError
时返回默认值,以及返回的值是否为0或空集
它与dict对象是不可变的这一事实有关,并且当我指向存储在key=1
上的值时,传递给我的对象引用等于False
我知道我可以写我自己的get方法来实现
def get(key, default=None):
try: return x[key]
except KeyError: return default
但是我想对.get
方法有更深入的了解。1
!=<代码>'1'
;int
不等于str
>>> x = {1:0}
>>>
>>> print x.get('1', 'a')
a
>>> print x.get(1, 'a')
0
你在第一次实验中犯了错误:
>>> x = {1: 0}
>>> x.get('1', 'a')
'a'
>>> x.get(1, 'a')
0
在Python中,DIST密钥可以是任何可哈希类型,而不只是字符串。注意字典由于相同的代码< <代码> hash()/<代码>值而认为<代码> 1 和<代码> 1 < /代码>,所以<代码> x [ 1 ] < /代码>和<代码> x [1 ] < /C>是等效的。YEP -甚至<代码> 1 +0J < /代码>将工作,或<代码>十进制。十进制(1)< /代码>,或者
分数。分数(1,1)
,等等。尽管这是因为它们的比较也相等,而不仅仅是因为它们具有相同的哈希值(否则每次冲突都将是灾难性的!)完全同意这一点。从hash.\uuuu doc\uuuuu
:具有相同值的两个对象具有相同的hash值。请观看关于词典的pycon 2010视频: