字典操作
大家好!这个章节我们来聊一聊 Python 中的字典操作。字典是一个非常常用的数据结构,它由键(key)和值(value)组成,可以用来存储各种类型的数据。我们会通过几个常见的字典方法来了解如何操作字典,就像你在生活中使用工具一样,掌握了字典操作,你就能灵活地存取和修改数据。
字典数据获取类操作
keys()用来获取字典中所有的key, 保存到一个列表中,并以dict_keys类型返回
stu = {'name': 'Tom', 'age': 23, 'gender': 'male', 'address': 'BeiJing'}
ks = stu.keys()
print(ks)
首先,我们来看一些常用的获取字典内容的方法。第一个是 keys(),它可以帮助我们获取字典中所有的键。返回的是一个 dict_keys 类型的对象,看起来像是一个列表,实际上它是一个视图对象,它能够动态反映字典的变化。举个例子,如果我们有一个字典记录了学生的信息,比如名字、年龄和性别,调用 stu.keys() 就可以得到字典中所有的键,如 name、age、gender。
values()用来获取字典中所有的value,保存到一个列表中,并以dict_values类型返回
stu = {'name': 'Tom', 'age': 23, 'gender': 'male', 'address': 'BeiJing'}
ks = stu.values()
print(ks)
接下来是 values(),它返回字典中所有的值。就像我们拿到了键,但有时我们更关心对应的值,调用 stu.values() 就可以拿到一个包含所有值的视图对象。比如,我们可能需要获取学生的所有信息,直接打印出来就可以看到所有的值。
items()用来获取字典中所有的键值对,每一个元素键值对都以一个元组保存,将所有元素元组保存到一个列表中,并以dict_items类型返回
stu = {'name': 'Tom', 'age': 23, 'gender': 'male', 'address': 'BeiJing'}
ks = stu.items()
print(ks)
接着是 items() 方法,它返回字典中的所有键值对。每个键值对都会作为一个元组,保存到列表中,返回的是一个 dict_items 类型的视图对象。如果你需要遍历字典并同时访问键和值,items() 方法是非常方便的。比如,通过 stu.items(),你可以得到类似 ('name', 'Tom') 这样的元组,然后进行遍历或其他处理。
get(key, default)用来获取key对应的值,如果指定的key不存在,则返回默认值。字典可以使用
字典对象[key]的形式获取键值对,但是该方法如果指定的key不存在,程序会抛出一个错误。此时可以使用get()替代该取值方法
stu = {'name': 'Tom', 'age': 23, 'gender': 'male', 'address': 'BeiJing'}
# print(stu["name"])
# print(stu["hobby"])
print(stu.get("name"))
print(stu.get("hobby"))
print(stu.get("hobby","无数据"))
接下来是 get(key, default) 方法,它用于获取字典中指定键的值。如果指定的键不存在,它会返回一个默认值,避免程序抛出异常。如果我们用 stu["hobby"] 这种方式去访问一个不存在的键,会抛出 KeyError,而使用 get() 就不会有这个问题。例如,如果我们查询 stu 字典中的 name 和一个不存在的 hobby,就能看到 get() 如何返回默认值。
字典添加更新类操作
setdefault(key,default)给一个不存在的key添加一个默认值并将该键值对保存到字典中。- 在一些场景下,字典的
key存在,但是该key却没有对应的值,此时,就可以使用该方法,为当前的key添加一个默认值。比如服务端要保存客户端发起请求时携带的请求头中的信息。
stu = {'name': 'Tom', 'age': 23, 'gender': 'male', 'address': 'BeiJing'}
stu.setdefault("hobby1")
print(stu)
stu.setdefault("hobby2", "无")
print(stu)
接下来我们讨论字典中的一些添加和更新操作。首先是 setdefault(key, default),这个方法可以为字典中的某个键设置默认值。如果这个键已经存在,它不会修改值;如果键不存在,它会添加这个键并赋予一个默认值。假设我们有一个字典,记录了一些学生的信息,如果有些键还没设置过值,我们可以用 setdefault() 为这些键设置默认值。比如,我们要为每个学生添加一个 hobby 键,但如果没有该键,则默认值为 无。
fromkeys(keys,val)用于创建一个新字典,以序列keys中元素做字典的键,value为字典所有键对应的初始值,默认为None。该方法是一个静态方法,需要使用字典类型名
dict调用。 该方法如果给给定keys参数,则所有的key对应值都为默认值None,如果给定val值,则所有key对应的值为val。
ks = ("name", "age", "gender")
s1 = dict.fromkeys(ks)
print(s1)
s2 = dict.fromkeys(ks,"无")
print(s2)
接着是 fromkeys(keys, val),它用于根据给定的键列表,创建一个新的字典,并给每个键设置相同的初始值。可以通过指定 val 来为所有键设置初始值,默认是 None。举个例子,我们可能需要创建一个学生信息表,但这些学生的爱好还没有填写,这时可以使用 fromkeys() 来创建一个初始为空的字典。
update(dict | iterable)使用参数中的数据更新当前字典。该方法的参数可以接收一个字典(大多数的使用方式),也可以接收一个可迭代对象,如果参数数据中的
key在当前字典中存在,则使用新值更新字典中的键值对,如果参数数据中的key在当前字内中不存在,则将键值对添加到当前字典中。
# 更新目标数据是一个字典
stu = {'name': 'Tom', 'age': 23, 'gender': 'male', 'address': 'BeiJing'}
newStu = {"name":"Jack","hobby":"eat"}
stu.update(newStu)
print(stu)
# 更新目标数据是一个可迭代对象
stu = {'name': 'Tom', 'age': 23, 'gender': 'male', 'address': 'BeiJing'}
newStu = (("name","Rose"),["hobby","play"])
stu.update(newStu)
print(stu)
接下来是 update(dict | iterable),它可以用一个新的字典或可迭代对象更新现有字典的内容。如果传入的是字典,那么它会用字典中的键值对更新原字典中的对应项;如果是可迭代对象,它会将键值对添加到原字典中。比如,假设你想把一个学生的名字从 Tom 改成 Jack,并添加一个新的键 hobby,可以通过 update() 来实现。
字典删除类操作
popitem()用来获取并删除字典中的最后一个键值对,返回一个元组,如果字典为空时,则抛出一个错误
stu = {'name': 'Tom', 'age': 23, 'gender': 'male', 'address': 'BeiJing'}
v = stu.popitem()
print(v)
print(stu)
v = stu.popitem()
print(v)
print(stu)
print({}.popitem())
现在我们来讨论一些删除字典内容的方法。首先是 popitem(),它会删除字典中的最后一个键值对,并返回该键值对。如果字典为空,它会抛出异常。举个例子,假设我们有一个学生字典,想删除最后一条记录并返回这条记录的信息,可以用 popitem() 方法。
pop(key)用于获取并删除字典中指定key对应的键值对。如果指定的key不存在,则抛出错误
stu = {'name': 'Tom', 'age': 23, 'gender': 'male', 'address': 'BeiJing'}
v = stu.pop("name")
print(v)
print(stu)
接着是 pop(key),它允许你根据指定的键删除对应的键值对。如果键不存在,则抛出错误。举个例子,如果我们要从字典中删除某个特定的键,比如 name,就可以使用 pop()。
clear()清空字典中所有的键值对元素
stu = {'name': 'Tom', 'age': 23, 'gender': 'male', 'address': 'BeiJing'}
print(stu)
stu.clear()
print(stu)
最后是 clear(),它会清空字典中所有的内容。这相当于将字典重置为空字典。举个例子,当你不再需要字典中的任何数据时,调用 clear() 可以将字典清空。
总结
- 字典数据获取类操作
- 字典添加更新类操作
- 字典删除类操作
最后来总结一下,这个章节我们一起学习了 Python 字典的常见操作,涉及到数据的获取、添加、更新和删除。通过这些方法,你可以方便地操作字典中的数据,无论是读取信息还是修改数据,或者是清除数据,都能够非常灵活地完成。掌握这些操作后,你就能更高效地处理字典数据了!