Python 3 – 字典的get()方法

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。

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程