1.字典
? ? ?列字典是“键值对”的无序可变序列,字典中的每个元素都是一个“键值对”,包含:"键对象"和“值对象”。可以通过“键对象”实现快速获取,删除,更新对应的“值对象”。“键”不可重复。
字典的创建
(1)通过{},dict()函数创建字典。
a={"name":"llajiji","age":18,"aa":[2,3,4]}
print(a) #{'name': 'llajiji', 'age': 18, 'aa': [2, 3, 4]}
b=dict(name='llajiji',age=23)
print(b) #{'name': 'llajiji', 'age': 23}
(2)通过zip()创建字典对象
a=['name','age','job'] #键对象
b=['mama','23','doctor'] #值对象
c=dict(zip(a,b))
print(c) #{'name': 'mama', 'age': '23', 'job': 'doctor'}
?(3)通过fromkeys创建值为空的字典
a=dict.fromkeys(['name','age','job'])
print(a) #{'name': None, 'age': None, 'job': None}
2.字典元素的访问
(1)通过【键】获得“值”
(2)通过get()方法获得值(推荐使用)
a={'name':'April','age':10,'job':'student'}
print(a['name']) #April
print(a.get('name')) #April
print(a.get('win')) #None
print(a.get('win','不存在')) #不存在,指定键不存在时默认返回的对象
(3)一些常见字典函数用法?
a={'name':'April','age':10,'job':'student'}
print(a.items()) #dict_items([('name', 'April'), ('age', 10), ('job', 'student')])列出所有键值对
print(a.keys()) #dict_keys(['name', 'age', 'job'])列出所有键
print(len(a)) #3 键值对个数
print('name' in a) #True 检测一个键是否在字典中
?3.字典元素添加、修改、删除
(1)给字典新增键值对,如果键已经存在则被覆盖,若键不存在则增加。
a={'name':'April','age':10,'job':'student'}
a['sex']='female'
print(a) #{'name': 'April', 'age': 10, 'job': 'student', 'sex': 'female'}
(2)使用update()将新字典中所有键值对全部添加到旧字典上,如果键重复则进行覆盖。
a={'name':'April','age':10,'job':'student'}
b={'name':'Bob','sex':'male','hobby':'football'}
a.update(b)
print(a) #{'name': 'Bob', 'age': 10, 'job': 'student', 'sex': 'male', 'hobby': 'football'}
(3)字典中元素的删除,可以使用del()方法,或者clear()删除所有键值对;pop()删除指定键值对,并返回对应的值对象。?
a={'name':'April','age':10,'job':'student'}
del(a['name'])
print(a) #{'age': 10, 'job': 'student'}
b=a.pop('age')
print(b) #10
print(a) #{'job': 'student'}
print(a.clear()) #None
(4)popitem():随机删除和返回键值对,字典是无序可变序列,因此没有元素的排序顺序等;popitem弹出随机的项。
a={'name':'April','age':10,'job':'student'}
print(a.popitem()) #('job', 'student')
print(a) #{'name': 'April', 'age': 10}
print(a.popitem()) #('age', 10)
print(a) #{'name': 'April'}
4.序列解包
? ?序列解包可以用于元组、列表、字典。序列解包可以方便对多个变量进行赋值。
x,y,z=(20,30,10)
print(x) #20
print(y) #30
print(z) #10
元组
(x,y,z)=(20,30,10)
print(x) #20
print(y) #30
print(z) #10
列表
[x,y,z]=[20,30,10]
print(x) #20
print(y) #30
print(z) #10
元组
a={'name':'Bob','age':29,'sex':'male'}
x,y,z=a
print(x) #name
print(y) #age
print(z)
x,y,z=a.values()
print(x) #Bob
print(y) #29
print(z)
x,y,z=a.items()
print(x) #('name', 'Bob')
print(y) #('age', 29)
print(z)
5.表格数据使用字典和列表储存并进行读取
r1={'name':'张三','age':18,'salary':'30000','city':'北京'}
r2={'name':'李四','age':19,'salary':'20000','city':'上海'}
r3={'name':'王五','age':20,'salary':'10000','city':'深圳'}
tb=[r1,r2,r3]
print(tb)
print(tb[1].get('salary')) #20000
for i in range(len(tb)):
print(tb[i].get('name'),tb[i].get('salary'),tb[i].get('age'),tb[i].get('city'))
'''
张三 30000 18 北京
李四 20000 19 上海
王五 10000 20 深圳
'''
?6.不要再遍历字典的过程中进行字典的修改,可以先进行遍历把需要修改的数据取出来,再进行修改。
7.集合:无序可变,集合底层是字典实现,集合的所有元素都是字典中的”键对象“,因此是不能重复且唯一的。
(1)集合创建和删除
? ?{}创建
a={233,4,'happy'}
print(a) #{233, 4, 'happy'}
a.add(4)
print(a) #{233, 4, 'happy'}元素不可重复
set()创建
a=['happy',422,21,'job']
b=set(a)
print(b) #{'job', 'happy', 21, 422}
remove()、clear()
a={'happy',422,21,'job'}
a.remove(422)
print(a) #{21, 'job', 'happy'}
a={'happy',422,21,'job'}
clear(a)
print(a)
(2)集合相关操作
a={'happy',422,21,'job'}
b={'girl',422,'job',51}
print(a|b) #{422, 'girl', 'job', 51, 21, 'happy'}并
print(a&b) #{'job', 422}交
print(a-b) #{'happy', 21}差
8.选择结构
? ?单分支选择结构
a=input("请输入一个小于10的数字:") #a为字符串类型
if int(a)<10:
print(a)
条件表达式详解
? ? ? ?在选择和循环结构中,条件表达式的值为False的情况如下:
? ? ? ?False、0、0.0、空值None、空序列对象
a=[]
if not a:
print('空的列表是false')
c='False'
if c:
print(c) #True c为非空字符串
d=0
if d:
print(d) #False 不进行打印
a=6
if 1<a<10:
print('哈哈哈哈哈')
9. 双分支选择结构??
s=input('请输入一个数字:')
if int(s)<10:
print('s是小于10的数字')
else:
print('s是大于等于10的数字')
三元条件运算符
条件为真时的值 if? ?(条件表达式)? else? 条件为假时的值
s=input('请输入一个数字:')
print('s是小于10的数字' if int(s)<10 else 's是大于等于10的数字')
10.多分支选择结构
score=int(input('请输入分数:'))
grade='' #空字符串
if score<60:
grade='不及格'
elif score<80: #已经>=80
grade='及格'
elif score<90:
grade='良好'
else:
grade='优秀'
print('分数是{0},等级是{1}'.format(score,grade))
x=int(input('请输入x='))
y=int(input('请输入y='))
a=''
if x>0 and y>0:
a='第一象限'
elif x<0 and y>0:
a='第二象限'
elif x<0 and y<0:
a='第三象限'
else:
a='第四象限'
print('坐标为({0},{1}),属于{2}'.format(x,y,a))
score=int(input('请输入一个0-100之间的分数:'))
degree='ABCDE'
num=0
if score>100 or score<0:
score=int(input('输入错误!请输入一个在0-100之间的数字:'))
else:
num=score//10
if num<6:
num=5
print('分数是{0},等级是{1}'.format(score,degree[9-num]))
?11.循环结构
num=0
while num<=10:
print(num)
num+=1
num=0
sum=0
while num<=100:
sum=sum+num
num+=1
print(sum)
?
|