目录
一.字典添加数据的方法
1.字符串,列表,e.g:list[0] = 10
2.update的功能与用法
3.update的功能与用法
4.setdefault的功能
5.setdefault的用法
6.注意事项
二.获取字典的所有key——keys函数
1.keys功能
2.keys的用法
3.实战
三.获取字典的所有值values
1.values功能
2.values的用法
3.注意事项
4.实战
四.字典key的获取
1.[]的获取方法
2.get功能
3.get用法
4.[]与get的区别
5.实战
五.字典删除
1.clear功能
2.clear用法
3.pop功能
4.pop用法
5.del函数
6.实战
六.字典copy
1.copy的功能
2.copy的用法
3.实战
七.字典成员运算符
1.in 与not in
2.get用于判断成员存在
3.实战
八.Python字典中的末尾删除函数-popitem
1.popitem功能
3.实战
4.阐明对比,del与pop的异同点
九.所有数据类型与布尔值的关系
1.数据类型与布尔值的关系
# coding:utf-8
user = {'name': 'dewei', 'age': 33}
xiaomu = {'name': 'xiaomu', 'age': 23, 'top': 175, 'sex': '男'}
print('原字典', user)
user.update(xiaomu)
print('新字典', user)
value = user.setdefault('name', 'xiaoyun')
value01 = user.setdefault('birthday', '2003-11-08')
print(user, value, value01)
原字典 {'name': 'dewei', 'age': 33}
新字典 {'name': 'xiaomu', 'age': 23, 'top': 175, 'sex': '男'}
{'name': 'xiaomu', 'age': 23, 'top': 175, 'sex': '男', 'birthday': '2003-11-08'} xiaomu 2003-11-08
进程已结束,退出代码0
用法:
# 创建一个空字典
employee_salaries = {}
# 使用 setdefault() 方法设置键-值对
# 如果键 "John" 不存在于字典中,则设置 "John" 对应的值为 50000
# 如果键 "John" 已经存在于字典中,则返回 "John" 对应的值,不进行修改
john_salary = employee_salaries.setdefault("John", 50000)
# 打印结果
print("John's salary:", john_salary) # 输出: John's salary: 50000
print("Employee salaries:", employee_salaries) # 输出: Employee salaries: {'John': 50000}
# 再次使用 setdefault() 方法设置键-值对
# 键 "Lisa" 不存在于字典中,因此设置 "Lisa" 对应的值为 45000
# 返回值为 45000
lisa_salary = employee_salaries.setdefault("Lisa", 45000)
# 打印结果
print("Lisa's salary:", lisa_salary) # 输出: Lisa's salary: 45000
print("Employee salaries:", employee_salaries) # 输出: Employee salaries: {'John': 50000, 'Lisa': 45000}
# 尝试使用 setdefault() 方法设置已存在的键-值对
# 键 "John" 已经存在于字典中,因此不进行修改,并返回 "John" 对应的值 50000
john_new_salary = employee_salaries.setdefault("John", 55000)
# 打印结果
print("John's new salary:", john_new_salary) # 输出: John's new salary: 50000
print("Employee salaries:", employee_salaries) # 输出: Employee salaries: {'John': 50000, 'Lisa': 45000}
在这个案例中,我们创建了一个空字典
employee_salaries
。然后,我们使用setdefault()
方法来设置键-值对。首先,我们设置了键为 "John",值为 50000。由于 "John" 之前不存在于字典中,该键-值对被成功设置,并且返回的值为设置的值 50000。然后,我们打印了 "John" 的薪水和整个字典的内容。接下来,我们再次使用
setdefault()
方法来设置键-值对。这次,我们设置了键为 "Lisa",值为 45000。由于 "Lisa" 之前不存在于字典中,该键-值对被成功设置,并且返回的值为设置的值 45000。然后,我们打印了 "Lisa" 的薪水和整个字典的内容。最后,我们尝试使用
setdefault()
方法设置已经存在的键-值对。这次,我们设置了键为 "John",值为 55000。由于 "John" 已经存在于字典中,该键-值对没有进行修改,并且返回的值为已存在的值 50000。然后,我们打印了 "John" 的新薪水和整个字典的内容。通过这个案例,我们可以看到
setdefault()
方法的用法:它允许我们在字典中设置键-值对,如果键不存在则设置,如果键已经存在则返回已存在的值。这对于需要在字典中添加新值但又不希望覆盖已存在值的情况非常有用。
用法:
Question:有没有什么办法可以让伪列表变成一个真正的列表?
我们用定义列表的函数List来帮忙,我们在list函数的括弧内书写My_dict.keys,也就是说将kevs的函数返回的伪列表以参数的形式传给list函数,并且我们将List的返回值赋值给一个新的变量,此时我们会发现伪列表前面的dict.keys不见了,变成了个真正的列表。
# 创建一个字典
student_scores = {
"Alice": 95,
"Bob": 80,
"Charlie": 75,
"David": 90,
"Eve": 85
}
# 使用keys()函数获取字典中的所有键
keys = student_scores.keys()
# 打印字典中的所有键
print("字典中的所有键:")
for key in keys:
print(key)
# 输出:
# 字典中的所有键:
# Alice
# Bob
# Charlie
# David
# Eve
在上述代码中,我们首先创建了一个名为
student_scores
的字典,其中包含了学生姓名和对应的分数。然后,我们使用keys()
函数来获取字典中的所有键,并将其赋值给变量keys
。注意,keys()
函数返回的结果是一个类似列表的对象,但它不是真正的列表,而是一个可迭代的视图。接下来,我们使用一个
for
循环遍历keys
,并逐个打印字典中的所有键。在循环内部,我们将每个键存储在变量key
中,并通过print()
函数将其输出到控制台。最终的输出结果显示了字典中的所有键:Alice、Bob、Charlie、David和Eve。
使用
keys()
函数可以方便地获取字典中的所有键,这在需要遍历字典或对字典的键进行操作时非常有用。
# 创建一个包含学生成绩的字典
scores = {
"Alice": 85,
"Bob": 92,
"Charlie": 78,
"David": 95,
"Eve": 88
}
# 使用values()函数获取字典中的所有值
score_list = scores.values()
# 打印成绩列表
print("成绩列表:", score_list)
# 遍历成绩列表并计算平均成绩
total_score = 0
for score in score_list:
total_score += score
average_score = total_score / len(score_list)
# 打印平均成绩
print("平均成绩:", average_score)
输出结果:
成绩列表: [85, 92, 78, 95, 88]
平均成绩: 87.6
在上面的例子中,我们首先创建了一个字典
scores
,其中键是学生的姓名,值是对应的成绩。然后,我们使用values()
函数获取字典中所有的值,并将其保存到score_list
变量中。接下来,我们使用一个循环遍历
score_list
,将每个成绩加起来计算总分。然后,我们通过将总分除以成绩数量,计算出平均成绩。最后,我们打印了成绩列表和平均成绩。
通过这个例子,我们展示了如何使用
values()
函数获取字典中的值,并对这些值进行进一步的处理,如计算平均值。这说明了values()
函数在处理字典数据时的实用性和灵活性。
关于get()方法不接受关键字参数,在Python2版本中确实是允许get()方法接受关键字参数的,但在Python3版本中,get()方法只接受两个位置参数,不接受任何关键字参数。位置参数是指在Python函数定义时声明的参数,它们按照声明顺序依次传递给函数。
# 创建一个字典
student_scores = {'Alice': 95, 'Bob': 80, 'Charlie': 90}
# 使用 get() 函数检索键对应的值
score1 = student_scores.get('Alice')
print("Alice's score:", score1) # 输出:Alice's score: 95
# 尝试使用不存在的键
score2 = student_scores.get('David')
print("David's score:", score2) # 输出:David's score: None
# 使用 get() 函数,并提供默认值
score3 = student_scores.get('Eve', 0)
print("Eve's score:", score3) # 输出:Eve's score: 0
在上面的示例中,我们首先创建了一个名为
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 异常,而是能够更好地控制程序的行为。
# coding:utf-8
my_dict = {'name': 'xiaomu', 'age': 15}
deleted_elements = my_dict.pop('age')
print('被删除的元素', deleted_elements)
print('删除操作后的的字典:', my_dict)
del my_dict['name']
print(my_dict)
projects = {
'ipad': {'name': 'ipad', 'price': 2200, 'desc': '平板电脑'},
'ipone': {'name': 'ipone', 'price': 3000, 'desc': '智能手机'},
'pc': {'name': 'pc', 'price': 5000, 'desc': '台式电脑'},
'mac': {'name': 'mac', 'price': 8000, 'desc': '苹果电脑'}}
print(projects.keys())
print('一个人购买了{},价格是{}'.format(projects['pc']['name'], projects['pc']['price']))
projects.pop('pc')
print(projects.keys())
result = projects.pop('mac')
print('一个程序员构面了{},价格是{}'.format(result['name'], result['price']))
print(projects.keys())
print('{}和{}都卖出了,他们一共花费了{}元'.format(projects['ipad']['name'], projects['ipone']['name'], projects['ipad']['price'] + projects['ipone']['price']))
projects.clear()
print(projects.keys())
del projects
# print(projects) # 会报错
输出结果:
被删除的元素 15
删除操作后的的字典: {'name': 'xiaomu'}
{}
dict_keys(['ipad', 'ipone', 'pc', 'mac'])
一个人购买了pc,价格是5000
dict_keys(['ipad', 'ipone', 'mac'])
一个程序员构面了mac,价格是8000
dict_keys(['ipad', 'ipone'])
ipad和ipone都卖出了,他们一共花费了5200元
dict_keys([])
进程已结束,退出代码0
# coding:utf-8
fruits = {
'apple': 30,
'banana': 50,
'pear': 100
}
real_fruits = fruits.copy()
print(real_fruits)
real_fruits['orange'] = 50
real_fruits.update({'cherry': 100})
print(real_fruits)
print('原始水果商', fruits)
real_fruits['apple'] = real_fruits['apple'] - 5
print(real_fruits)
real_fruits['pear'] -= 3
print(real_fruits)
real_fruits.clear()
print(real_fruits)
print('第二天')
real_fruits = fruits.copy()
print(real_fruits)
输出结果:
{'apple': 30, 'banana': 50, 'pear': 100}
{'apple': 30, 'banana': 50, 'pear': 100, 'orange': 50, 'cherry': 100}
原始水果商 {'apple': 30, 'banana': 50, 'pear': 100}
{'apple': 25, 'banana': 50, 'pear': 100, 'orange': 50, 'cherry': 100}
{'apple': 25, 'banana': 50, 'pear': 97, 'orange': 50, 'cherry': 100}
{}
第二天
{'apple': 30, 'banana': 50, 'pear': 100}
进程已结束,退出代码0
# 创建一个字典
person = {
'name': 'John',
'age': 30,
'city': 'New York'
}
# 检查键是否存在于字典中
if 'name' in person:
print("Name is present in the dictionary.") # 输出: Name is present in the dictionary.
# 检查键是否不存在于字典中
if 'gender' not in person:
print("Gender is not present in the dictionary.") # 输出: Gender is not present in the dictionary.
# 创建一个嵌套字典
employees = {
'emp1': {'name': 'Alice', 'age': 25},
'emp2': {'name': 'Bob', 'age': 30},
'emp3': {'name': 'Charlie', 'age': 35}
}
# 检查嵌套字典的键是否存在
if 'emp2' in employees:
print("Employee 'emp2' is present in the dictionary.") # 输出: Employee 'emp2' is present in the dictionary.
# 检查嵌套字典的键和值是否存在
if 'emp3' in employees and employees['emp3']['age'] > 30:
print("Employee 'emp3' is present and age is greater than 30.") # 输出: Employee 'emp3' is present and age is greater than 30.
在上述案例中,我们首先创建了一个简单的字典
person
,其中包含名称、年龄和城市等键值对。然后,我们使用in
运算符检查'name'
是否存在于字典person
中,并输出相应的消息。接着,我们使用not in
运算符检查'gender'
是否不存在于字典中,并输出相应的消息。接下来,我们创建了一个嵌套字典
employees
,其中每个键都是员工的ID,对应的值是包含姓名和年龄的字典。我们使用in
运算符检查'emp2'
是否存在于employees
字典中,并输出相应的消息。最后,我们结合使用
in
运算符和字典的键值对来检查'emp3'
是否存在于employees
字典中,并且检查'emp3'
对应的年龄是否大于30。如果两个条件都满足,将输出相应的消息。这个案例展示了如何使用成员运算符来检查字典中的键是否存在,并可以根据需要进行进一步的条件判断。注释详细解释了每个步骤的目的和输出结果,以便清晰理解代码的功能。
2.popitem用法
# coding:utf-8
students = {'dewei': '到', 'xiaomu': '在', 'xiaogao': '在的'}
print('xiaogao在吗?')
xiaogao = students.popitem()
print('{} 喊 {}'.format(xiaogao[0], xiaogao[1]))
print('xiaomu在吗?')
xiaomu = students.popitem()
print('{} 喊 {}'.format(xiaomu[0], xiaomu[1]))
print('dewei在吗?')
dewei = students.popitem()
print('{}喊{}'.format(dewei[0], dewei[1]))
print(students) # 此时字典为空
# students.popitem()
输出结果:
xiaogao在吗?
xiaogao 喊 在的
xiaomu在吗?
xiaomu 喊 在
dewei在吗?
dewei喊到
{}
进程已结束,退出代码0
- 字符串的del和pop方法: 字符串不支持del方法,因为字符串是不可变的,无法删除其中的某个字符。字符串也不支持pop方法,因为pop方法是用于列表和字典的。
- 列表的del和pop方法:列表支持del方法,可以删除其中的任何元素,包括最后一个元素和中间的元素。列表也支持pop方法,pop方法默认删除并返回列表中的最后一个元素,也可以指定索引删除指定位置的元素,并返回该元素的值。字典的del和pop方法: 字典支持del方法,可以删除其中任何一个键值对。字典也支持pop方法pop方法需要提供要删除的键值对的键,如果该键存在,则该键值对被删除并返回相应的值。如果该键不存在,pop方法还可以提供一个可选的默认值,该值将作为pop方法的默认返回值