Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/299.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python使用dict.get()方法,其中value=0_Python_Dictionary - Fatal编程技术网

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

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

(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
上的值时,传递给我的对象引用等于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视频: