25 字典
字典是“键值对”的无序可变对象,字典中的每个元素都包含“键对象”和“值对象”,可以通过“键对象”实现快速获取删除更新对应的“值对象”。
a = {‘name’:‘lmh’,‘age’:18,‘job’:‘student’}
键如果重复的话,后面的值会覆盖前面的值
1.字典的创建
- {}或dict()创建
a = {'name':'lmh','age':18,'job':'student'}
b = dict(name='lmh',age=18,job='student')
- 通过zip()创建字典对象
a = ['name','age','job']
b = ['lmh',18,'student']
print(list(zip(a,b)))
#[('name', 'lmh'), ('age', 18), ('job', 'student')]
k = dict(zip(a,b))
print(k)
#{'name': 'lmh', 'age': 18, 'job': 'student'}
xu
2.字典元素的访问
通过[键]获得值对象。若键不存在,则抛出异常
a = {'name': 'lmh', 'age': 18, 'job': 'student'}
b = a['name']
print(b) #lmh
通过get()获得“值”。指定键不存在,返回none;也可以设定指定键不存在时默认返回的对象
a = {'name': 'lmh', 'age': 18, 'job': 'student'}
print(a.get("age")) #18
print(a.get("gender",'female')) #female
3.列出所有的键值对,键,值
a = {'name': 'lmh', 'age': 18, 'job': 'student'}
print(a.items())#dict_items([('name', 'lmh'), ('age', 18), ('job', 'student')])
print(a.keys())#dict_keys(['name', 'age', 'job'])
print(a.values())#dict_values(['lmh', 18, 'student'])
4.len()键值对的个数
5.检测一个“键”是否在字典中
a = {'name': 'lmh', 'age': 18, 'job': 'student'}
print('name' in a) #True
6.字典元素的添加
给字典新增键值对,如果键已经存在,则覆盖旧的键值对
a = {'name': 'lmh', 'age': 18, 'job': 'student'}
a['gender']='female'
a['age']=19
print(a)
#{'name': 'lmh', 'age': 19, 'job': 'student', 'gender': 'female'}
使用update()将新字典中所有的键值对全部添加到旧字典对象上,如果key有重复,则直接覆盖。
a = {'name': 'lmh', 'age': 18, 'job': 'student'}
b = {'name':'lhh','gender':'female'}
a.update(b)
print(a)
#{'name': 'lhh', 'age': 18, 'job': 'student', 'gender': 'female'}
7.字典元素删除
del()删除指定的键值对;pop()删除指定的键值对,并返回对应的值对象;clear()删除所有的键值对
a = {'name': 'lmh', 'age': 18, 'job': 'student'}
del(a['name'])
print(a) #{'age': 18, 'job': 'student'}
age=a.pop('age')
print(a) #{'job': 'student'}
print(age) #18
a.popitem()随机删除键值对(字典是无序的)
8.序列解包:依次对多个变量赋值
用于字典时,默认是对“键”进行操作,要对键值对进行操作,需要使用items();对“值”进行操作,则需要使用values()
a = {'name': 'lmh', 'age': 18, 'job': 'student'}
x,y,z = a
print(x,y,z) #name age job
o,p,q = a.items()
print(o,p,q) #('name', 'lmh') ('age', 18) ('job', 'student')
r,s,t = a.values()
print(r,s,t) #lmh 18 student
9.表格数据使用字典和列表存储和访问
a = {'name': 'lmh', 'age': 18, 'job': 'student'}
b = {'name': 'lmm', 'age': 19, 'job': 'teacher'}
c = {'name': 'lhh', 'age': 20, 'job': 'doctor'}
tb = [a,b,c]
print(tb[2].get("job")) #打印c行的job,doctor
10.字典核心底层原理
字典对象的核心是散列表(总是有空白元素的数组),数组的每个单元叫做bucket。每个bucket有两部分:一个是键对象的引用,另一个是值对象的引用
26 集合
集合是无序可变的,元素不能重复,底层是字典的键对象
1.用{}创建集合对象,使用add()添加元素
用set(),将列表,元组等转为集合
remove()删除指定元素
2.a|b并集,a&b或者a.intersaction(b)交集,a-b或者a.difference(b)差集(a里面有b里没有),a.union(b)并集
27 控制语句和逻辑思维
任何程序本质上由“变量、选择语句、循环语句”组成
(一)选择结构(条件判断结构)
1.单分支选择结构
num = 8
if num<10:
print("小于10的整数"+str(num))
2.条件表达式
条件表达式的值为False的情况:False、0、0.0、空值None、空序列对象(列表,元组,集合,字典,字符串)、空range对象、空迭代对象
其他情况均为True。Python所有的合法表达式都可以看做条件表达式,甚至一个非零数字也可以作为条件表达式
条件表达式中不能出现赋值操作符=,==判断是可以的
3.双分支选择结构(if...else)
num = input("输入一个数字:")
if int(num)<10:
print(num)
else:
print("数字太大")
4.三元条件运算符
只适用于简单的赋值情况
格式:条件为真的值 if 条件表达式 else 条件为假的值
num = input("输入一个数字:")
print(num if int(num)<10 else "数字太大")
5.多分支选择结构
为False就继续往下判断,直到为True时输出,注意逻辑顺序关系
score = input("输入一个学生成绩:")
grade = ''
if int(score)<60:
grade = "不及格"
elif int(score)<80:
grade = "及格"
elif int(score)<90:
grade = "良好"
else:
grade = "优秀"
print("分数是{0},等级是{1}".format(score,grade)) #字符串格式化
6.选择结构的嵌套
score = input("输入一个学生成绩在0-100间:")
grade = ''
if int(score)>100 or int(score)<0:
score = int(input("输入错误"))
else:
if int(score)<60:
grade = "不及格"
elif int(score)<80:
grade = "及格"
elif int(score)<90:
grade = "良好"
else:
grade = "优秀"
print("分数是{0},等级是{1}".format(score,grade)) #字符串格式化
#如果score>100,则还是会print但是没有grade,所以只有score的值“输入错误”
更简便写法
score = int(input("输入一个学生成绩在0-100间:"))
grade = 'ABCDE'
num = 0
if int(score)>100 or int(score)<0:
score = int(input("输入错误"))
else:
num = score//10
if num<6:num=5
print("分数是{0},等级是{1}".format(score,grade[9-num])) #字符串格式化,这里用字符串的索引
#如果score>100,则还是会print但是没有grade,所以只有score的值“输入错误”