Python字典的常用方法
目录
一.字典添加数据的方法
1.字符串,列表,e.g:list[0] = 10
- 字典没有索引
- dict[name] ='xiaoding'
- 添加或修改,根据key是否存在所决定
2.update的功能与用法
- 添加新的字典,如新字典中有和原字典相同的key,则该key的value会被新字典的value覆盖
3.update的功能与用法
- 用法:
- dict.update(new_dict)--该函数无返回值参数: new_dict: 新的字典
- 实战:
- 输出结果:
-
4.setdefault的功能
- 获取某个key的value,如key不存在于字典中,将会添加key并将value设为默认值
5.setdefault的用法
用法:
- dict.setdefault(key, value)
- 参数:
- key 需要获取的key
- value 如果key不存在,对应这个key存入字典的默认值
- 实战:
在这个案例中,我们创建了一个空字典
employee_salaries
。然后,我们使用setdefault()
方法来设置键-值对。首先,我们设置了键为 "John",值为 50000。由于 "John" 之前不存在于字典中,该键-值对被成功设置,并且返回的值为设置的值 50000。然后,我们打印了 "John" 的薪水和整个字典的内容。接下来,我们再次使用
setdefault()
方法来设置键-值对。这次,我们设置了键为 "Lisa",值为 45000。由于 "Lisa" 之前不存在于字典中,该键-值对被成功设置,并且返回的值为设置的值 45000。然后,我们打印了 "Lisa" 的薪水和整个字典的内容。最后,我们尝试使用
setdefault()
方法设置已经存在的键-值对。这次,我们设置了键为 "John",值为 55000。由于 "John" 已经存在于字典中,该键-值对没有进行修改,并且返回的值为已存在的值 50000。然后,我们打印了 "John" 的新薪水和整个字典的内容。通过这个案例,我们可以看到
setdefault()
方法的用法:它允许我们在字典中设置键-值对,如果键不存在则设置,如果键已经存在则返回已存在的值。这对于需要在字典中添加新值但又不希望覆盖已存在值的情况非常有用。
6.注意事项
- 字典中每一个key一定是唯一的
- 字典中的数据量没有限制
- 字典中的value可以是任何python的内置数据类型的对象和自定义的对象
二.获取字典的所有key——keys函数
1.keys功能
- 获取当前字典中所有的键( key )
2.keys的用法
用法:
- dict.keys()->无需传参,返回一个key集合的伪列表
- 伪列表不具备列表的所有功能,完全没有列表的功能,比如我们无法通过索引获取成员,也无法修改,以及列表中各内置函数也无法使用,比如append
Question:有没有什么办法可以让伪列表变成一个真正的列表?
我们用定义列表的函数List来帮忙,我们在list函数的括弧内书写My_dict.keys,也就是说将kevs的函数返回的伪列表以参数的形式传给list函数,并且我们将List的返回值赋值给一个新的变量,此时我们会发现伪列表前面的dict.keys不见了,变成了个真正的列表。
3.实战
- 由 keys 获取的列表每个value都是唯一的,因为字典的每个key都是唯一的。
在上述代码中,我们首先创建了一个名为
student_scores
的字典,其中包含了学生姓名和对应的分数。然后,我们使用keys()
函数来获取字典中的所有键,并将其赋值给变量keys
。注意,keys()
函数返回的结果是一个类似列表的对象,但它不是真正的列表,而是一个可迭代的视图。接下来,我们使用一个
for
循环遍历keys
,并逐个打印字典中的所有键。在循环内部,我们将每个键存储在变量key
中,并通过print()
函数将其输出到控制台。最终的输出结果显示了字典中的所有键:Alice、Bob、Charlie、David和Eve。
使用
keys()
函数可以方便地获取字典中的所有键,这在需要遍历字典或对字典的键进行操作时非常有用。
三.获取字典的所有值values
1.values功能
- 获取当前字典中所有键值对中的值(value)
2.values的用法
- 用法:
- dict.values()->无需传参,返回一个value集合的伪列表
3.注意事项
- 伪列表是不能进行修改的,因为它们只是原字典视图的副本,即它们是只读的(read-only)。在 Python 中,字典的keys()、values() 和 items() 函数返回的是视图对象 (view obiects),这些视图对象是字典内容的可迭代副本,但它们没有自己的存储空间。视图对象是基于字典原对象动态生成的,所以当字典本身发生变化时,返回的视图对象也会跟着变化。因为视图对象是原字典的副本,所以对其进行更改并不会更新原字典,而只是更改其本身,因此它们是只读的,因为不允许修改原字典。同样地,对于字符串、元组等不可变类型因为它们不支持原地修改,因此它们也是只读的。由于这些对象是不可变的,因此 Python 禁止对它们进行修改,以确保程序的安全性和可维护性。
4.实战
输出结果:
在上面的例子中,我们首先创建了一个字典
scores
,其中键是学生的姓名,值是对应的成绩。然后,我们使用values()
函数获取字典中所有的值,并将其保存到score_list
变量中。接下来,我们使用一个循环遍历
score_list
,将每个成绩加起来计算总分。然后,我们通过将总分除以成绩数量,计算出平均成绩。最后,我们打印了成绩列表和平均成绩。
通过这个例子,我们展示了如何使用
values()
函数获取字典中的值,并对这些值进行进一步的处理,如计算平均值。这说明了values()
函数在处理字典数据时的实用性和灵活性。
四.字典key的获取
1.[]的获取方法
- 字典+中括号内传key,不进行赋值操作即为获取
- 返回key对应的value值
2.get功能
- 获取当前字典中指定key的value
3.get用法
- 用法:
- dict.get(key, default=None) # 注意!使用时需要把‘default=’省略,因为python3.0中只允许两个位置参数,此处带上只是为了更好的说明。
- 可以用于条件判断语句,不指定默认值,如果没有该键就不返回值,就代表空,则代表False
- 参数:
- key :需要获取value的key
- default : key不存在则返回此默认值,默认是None,我们也可
以自定义
4.[]与get的区别
- []如果获取的key不存在,则直接报错
- get如果获取的key不存在,则返回默认值
- 所以开发中,优先使用get函数
关于get()方法不接受关键字参数,在Python2版本中确实是允许get()方法接受关键字参数的,但在Python3版本中,get()方法只接受两个位置参数,不接受任何关键字参数。位置参数是指在Python函数定义时声明的参数,它们按照声明顺序依次传递给函数。
5.实战
在上面的示例中,我们首先创建了一个名为
student_scores
的字典,它包含了学生姓名和对应的分数。然后,我们使用get()
函数来检索字典中指定键的值。
- 在第一个例子中,我们通过
student_scores.get('Alice')
检索了键'Alice'
对应的值,即学生 Alice 的分数。由于'Alice'
是存在于字典中的键,函数返回了该键对应的值 95,并将其赋值给变量score1
。最后,我们将score1
打印出来,输出为Alice's score: 95
。- 在第二个例子中,我们尝试使用
student_scores.get('David')
来检索一个不存在于字典中的键'David'
。由于该键不存在,get()
函数返回了 None,并将其赋值给变量score2
。最后,我们将score2
打印出来,输出为David's score: None
。- 在第三个例子中,我们使用
get()
函数来检索一个不存在于字典中的键'Eve'
。然而,与前面的例子不同的是,我们在get()
函数中提供了一个默认值 0。由于'Eve'
不存在于字典中,get()
函数返回了默认值 0,并将其赋值给变量score3
。最后,我们将score3
打印出来,输出为Eve's score: 0
。这个示例清楚地展示了如何使用
get()
函数来检索字典中的值,并且在键不存在时提供默认值。通过使用get()
函数,我们可以避免在访问不存在的键时引发 KeyError 异常,而是能够更好地控制程序的行为。
五.字典删除
1.clear功能
- 清空当前的字典中所有数据
2.clear用法
- dict.clear()->无参数,无返回值
3.pop功能
- 删除字典中指定的key,并将其结果返回,如果key不存在则报错
4.pop用法
- 用法:
- dict.pop(key)- key希望被删掉的键>>返回这个key对应的值(value )
5.del函数
- del删除字典中的元素或整个字典
6.实战
输出结果:
六.字典copy
1.copy的功能
- 将当前字典复制产生一个新的字典 (与原字典不是相同的内存地址)
2.copy的用法
- 用法:dict.copy()->该函数无参数,返回一个与原字典一模一样但内存地址不同的字典
3.实战
输出结果:
七.字典成员运算符
1.in 与not in
- 只能判断key是否存在
2.get用于判断成员存在
- In [42]: test_dict = { 'name': 'xiaoding'}
In [43]: bool(test_dict.get( 'name' ))
out [43]: True
3.实战
在上述案例中,我们首先创建了一个简单的字典
person
,其中包含名称、年龄和城市等键值对。然后,我们使用in
运算符检查'name'
是否存在于字典person
中,并输出相应的消息。接着,我们使用not in
运算符检查'gender'
是否不存在于字典中,并输出相应的消息。接下来,我们创建了一个嵌套字典
employees
,其中每个键都是员工的ID,对应的值是包含姓名和年龄的字典。我们使用in
运算符检查'emp2'
是否存在于employees
字典中,并输出相应的消息。最后,我们结合使用
in
运算符和字典的键值对来检查'emp3'
是否存在于employees
字典中,并且检查'emp3'
对应的年龄是否大于30。如果两个条件都满足,将输出相应的消息。这个案例展示了如何使用成员运算符来检查字典中的键是否存在,并可以根据需要进行进一步的条件判断。注释详细解释了每个步骤的目的和输出结果,以便清晰理解代码的功能。
八.Python字典中的末尾删除函数-popitem
1.popitem功能
- 删除当前字典里末尾一组键值对并将其返回
2.popitem用法
- 用法:dict.popitem()--无需传参
- >>返回被删除的键值对,用元组包裹,0索引是key,1索引是value
- 注意事项:如字典为空,则直接报错
3.实战
输出结果:
4.阐明对比,del与pop的异同点
- 在Python中,字符串、列表和字典,它们都有del和pop方法,但是它们的方法和效果各不相同,具体情况如下:
- 字符串的del和pop方法: 字符串不支持del方法,因为字符串是不可变的,无法删除其中的某个字符。字符串也不支持pop方法,因为pop方法是用于列表和字典的。
- 列表的del和pop方法:列表支持del方法,可以删除其中的任何元素,包括最后一个元素和中间的元素。列表也支持pop方法,pop方法默认删除并返回列表中的最后一个元素,也可以指定索引删除指定位置的元素,并返回该元素的值。字典的del和pop方法: 字典支持del方法,可以删除其中任何一个键值对。字典也支持pop方法pop方法需要提供要删除的键值对的键,如果该键存在,则该键值对被删除并返回相应的值。如果该键不存在,pop方法还可以提供一个可选的默认值,该值将作为pop方法的默认返回值
九.所有数据类型与布尔值的关系
1.数据类型与布尔值的关系
- 每一种数据类型,自身的值都有表示True与False
- not 对于一切结果取反
- 点赞
- 收藏
- 关注作者
评论(0)