11.5 学习日志

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的值“输入错误”

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值