Python python字典:get vs setdefault
在本文中,我们将介绍Python中字典的两个常用方法——get和setdefault,它们都用于从字典中获取值,但在某些情况下有着不同的行为和用途。
阅读更多:Python 教程
字典介绍
字典是Python中的一种无序、可变的数据结构,用于存储键-值对。字典中的键必须是唯一的,而值可以是任何数据类型。字典是一种非常高效的数据结构,可以快速地根据键获取对应的值。
下面是一个字典的示例:
user = {
'name': 'John',
'age': 25,
'profession': 'engineer'
}
get方法
get方法用于从字典中获取指定键的值。它接受一个键作为参数,并返回对应的值。如果字典中不存在该键,则返回None或者指定的默认值。
下面是get方法的语法:
value = dict.get(key, default=None)
其中,key表示要获取的键,default表示当指定键不存在时返回的默认值(默认为None)。
示例代码:
user = {
'name': 'John',
'age': 25
}
name = user.get('name')
print(name) # 输出:John
city = user.get('city', 'unknown')
print(city) # 输出:unknown
在上面的示例中,我们首先通过get方法获取了字典中键’name’对应的值,然后再尝试获取键’city’对应的值,由于字典中不存在该键,所以返回了我们指定的默认值’unknown’。
setdefault方法
setdefault方法也用于从字典中获取指定键的值,但与get方法不同的是,如果指定键不存在于字典中,setdefault方法会将该键与指定的默认值插入到字典中。
下面是setdefault方法的语法:
value = dict.setdefault(key, default=None)
其中,key表示要获取的键,default表示当指定键不存在时要插入的默认值。
示例代码:
user = {
'name': 'John',
'age': 25
}
name = user.setdefault('name', 'unknown')
print(name) # 输出:John
city = user.setdefault('city', 'unknown')
print(city) # 输出:unknown
print(user) # 输出:{'name': 'John', 'age': 25, 'city': 'unknown'}
在上面的示例中,我们首先通过setdefault方法获取了字典中键’name’对应的值,由于字典中存在该键,所以返回了它的值’John’。然后我们尝试通过setdefault方法获取字典中键’city’对应的值,由于字典中不存在该键,所以setdefault方法将该键与指定的默认值’unknown’插入到了字典中。
get vs setdefault
get和setdefault方法在某些情况下有着相似的行为,即都可以用于获取字典中指定键的值。但是它们的主要区别在于当键不存在于字典中时的处理方式。
get方法返回None或者指定的默认值,而不会修改字典本身。而setdefault方法会将指定键与默认值一起插入到字典中,以后可以直接使用这个键。
user = {
'name': 'John',
'age': 25
}
name = user.get('name', 'unknown')
print(name) # 输出:John
name = user.get('city', 'unknown')
print(name) # 输出:unknown
print(user) # 输出:{'name': 'John', 'age': 25}
user.setdefault('city', 'unknown')
print(user) # 输出:{'name': 'John', 'age': 25, 'city': 'unknown'}
在上面的示例中,我们首先使用get方法尝试获取字典中键’name’对应的值,由于该键存在,所以返回了它的值’John’。然后我们使用get方法尝试获取字典中键’city’对应的值,由于该键不存在,所以返回了我们指定的默认值’unknown’,但是字典本身并没有发生改变。
接着我们使用setdefault方法获取字典中键’city’对应的值,由于该键不存在,所以setdefault方法将该键与指定的默认值’unknown’插入到了字典中,字典发生了变化。
总结
通过本文的介绍,我们了解了Python中字典的get和setdefault方法。它们都可以用于从字典中获取指定键的值,但在处理键不存在的情况时有着不同的行为。get方法返回None或者指定的默认值,而不会修改字典本身;而setdefault方法会将指定键与默认值一起插入到字典中。根据实际需求选择适合的方法,可以更加方便地操作字典中的数据。
极客教程