Python 3 – 字典的get()方法
在 Python 中,字典是一种非常常用的数据类型,它的 get() 方法可以用来获取指定键的值。如果该键不存在,get() 方法会返回 None 或者指定的默认值。
基本语法
字典的 get() 方法的基本语法如下所示:
dict.get(key, default=None)
其中,key 表示要获取值的键,default 表示该键不存在时返回的默认值。如果不指定默认值,则默认返回 None。下面是一个简单的例子:
d = {'dog': '狗', 'cat': '猫', 'bird': '鸟'}
print(d.get('cat')) # 输出:猫
print(d.get('fish')) # 输出:None
print(d.get('fish', '没有这个词')) # 输出:没有这个词
在上面的例子中,我们首先定义了一个字典 d,然后分别使用 get() 方法获取了字典中 ‘cat’ 和 ‘fish’ 两个键对应的值。
高级用法:get() 方法配合 defaultdict
如果我们要获取的键在字典中不存在,那么 get() 方法会返回 None 或者指定的默认值。但是如果我们使用 defaultdict,就可以在键不存在的时候自动创建一个默认值。
具体来说,如果我们使用 Python 内置的 collections 模块中的 defaultdict 类,并指定一个默认工厂函数,那么在访问键不存在的项时,该工厂函数就会自动创建一个默认值。下面是一个例子:
from collections import defaultdict
d = defaultdict(int)
print(d['cat']) # 输出:0
d = defaultdict(float)
print(d['cat']) # 输出:0.0
d = defaultdict(lambda: '不存在的键')
print(d['cat']) # 输出:不存在的键
在上面的例子中,我们分别创建了三个 defaultdict 对象 d,并且指定了 int 类型、float 类型和一个返回字符串的 lambda 函数作为默认工厂函数。
然后我们分别尝试访问键 ‘cat’ 对应的值,如果该键不存在,则会自动创建一个默认值并返回。
性能比较
在处理大数据量的情况下,字典的 get() 方法和直接使用下标访问字典项的效率是有区别的。
在大量访问字典的情况下,使用 get() 方法的效率甚至低于直接访问字典项。下面是一个简单的例子:
from timeit import Timer
d = {str(i): i for i in range(10000)}
def test1():
for i in range(10000):
if i in d:
x = d[i]
def test2():
for i in range(10000):
x = d.get(str(i))
t1 = Timer('test1()', 'from __main__ import test1')
print('直接访问字典项:', t1.timeit(number=1000), 'milliseconds')
t2 = Timer('test2()', 'from __main__ import test2')
print('使用 get() 方法:', t2.timeit(number=1000), 'milliseconds')
在上面的例子中,我们首先定义了一个包含 10000 个整数的字典 d。然后我们分别定义了两个测试函数 test1 和 test2,分别用来测试直接访问字典项和使用 get() 方法访问字典项的效率。
最后我们使用 timeit 模块进行了 1000 次测试,并输出了测试结果。在本机上,直接访问字典项的效率要高于使用 get() 方法。
结论
在 Python 中,字典的 get() 方法可以用来获取指定键的值。如果该键不存在,get() 方法会返回 None 或者指定的默认值。在处理大量数据时,直接访问字典项的效率要高于使用 get() 方法。如果需要在键不存在时自动创建默认值,可以使用 defaultdict。