第四章

字典
键值对;无序
键:是任意不变数据(整数,浮点数,字符串或者元组。列表,字典,集合属于可变对象,不能作为键,并且键不能重复(后面的键会覆盖前面的键))
值可以是任意数据,并且可以重复
在这里插入图片描述

字典的创建:
a = {1:10,2:20} #不用dict,就需要使用:
a = dict{name = “zhangsan”,age = 10}
a = dict([(“name”,“zhangsan”),(“age”,18)])#列表中添加元组
a = {} #创建空对象字典
d = dict{}
需要了解的:zip()和fromkeys
在这里插入图片描述
字典元素的访问
a = {“name”:“zhangsan”,“age”:10,“job”:“programmer”}
a[“name”] #方括号加键可以获得
通过get()获得值,推荐使用
a.get(“name”)
zhangsan
a.get(“ddd”,“不存在”) #灵活,如果不存在,就输出后面的参数
不存在
列出所有的键值对
a.items()
列出所有的键。列出所有的值
a.key()
a.vlaues()
键值对的个数
len()
检测键是否在字典中
“name” in a
True

字典元素的添加修改和删除
添加新内容
a[“address”] = “XXXX” #如果键已经存在,就会覆盖。
使用update()将新字点中所有键值对全部添加到旧字典上,如果key有重复,则覆盖
a = {“name”:“zhangsan”,“age”:10,“job”:“programmer”}
b = {“name”:“lisi”,“age”:12,“address”:“XXX”}
a.update(b) #将b添加到a中
a
a = {“name”:“lisi”,“age”:12,“job”:“programmer”,“address”:“XXX”}

字典元素的删除。
del()方法 #删除字典的元素
clear()方法 #删除所有的键值对 。字典变为空字典
pop() #删除指定键值对,并返回"值对象"
a = {“name”:“zhangsan”,“age”:10,“job”:“programmer”}
del(a[“name”])
{“age”:10,“job”:“programmer”}
b = a.pop(“age”) # 弹出age,返回一个age的值:10
b
10
popitem():随机删除和返回该键值对2.因为字典是"无序可变序列",因此没有第一个元素和最后一个元素的概念。popitem弹出随机项。因为字典没有"最后的元素"或者其他有关的概念。所以想一个接一个的移除并处理项,这个方法就非常有效(因为不用事先获取字典的键)
对popitem的个人理解:由于字典是无序的。所有没有所有第几个的概念。这样随机弹出一个键并且返回键值对,然后进行处理,并且不需要事先获取字典的键。
a = {“name”:“zhangsan”,“age”:10,“job”:“programmer”}
a.popitem() #弹出一个键
(“age”,10) #弹出的键值对
{“name”:“zhangsan”,“job”:“programmer”}
a.popitem()
(“job”:“programmer”)
{“name”:“zhangsan”}
a.popitem()
(“name”:“zhangsan”)

序列解包
序列解包可以用于元组,列表,字典。
序列解包可以让我们方便的对多个变量赋值。
字典的解包
s = {“name”:“zhangsan”,“age”:10,“job”:“programmer”}
对键解包;对值解包;对键值对解包
a,b,c = s #没说明的时候,是对键解包
a
name
b
age
c
job

a,b,c = s.value() #如果想对值进行解包,那需要在s后面加上.value()
a
zhangsan
b
10
c
programmer

a,b,c = s.items() #如果想对键值对进行解包,那需要在s后面加.items()
a
(“name”,“zhangsan”)
b
(“age”,10,“job”)
c
(“job”,“programmer”)

小练习:字典和别表存储
[{“name”:“zhangsan”,“age”:18,“money”:30,“city”:“beijing”}
{“name”:“lisi”,“age”:12,“money”:32,“city”:“shanghai”}
{“name”:“wangwu”,“age”:15,“money”:35,“city”:“shenzhen”}]

#获得第二行的人的薪资
a[1].get(“money”)
32
#打印表中所有的薪资
for i in range(3):
print(a[i].get(“money”))
#打印表中所有数据(遍历)
for i in range(len(a))
print(a[i].get(“name”),a[i].get(“age”),a[i].get(“money”),a[i].get(“city”))

表格数据练习非常重要。多加练习

字典核心底层原理
散列表:是一个总有空白元素的数组。数组的每个单元叫bucket,每个bucket有两部分,一个是键对象的引用,一个是值对象的引用
字典对象的核心是散列表

列表是通过索引去找对象的。
字典是通过键去找相应的value
在这里插入图片描述

集合和字典:
集合是无序可变的,元素不能重复
其实集合就是字典的键组成
1.创建集合
a = {1,22.3,“aaa”}
2.使用set(),将列表,元组等课迭代对象转化成集合(如果原来数据又重复数据,则值保留一个)
a = [1,2,3,1]
b = set(a)
b
{1,2,3}
3.remove()删除指定元素,clear()清空整个集合
a = {1,2,3,4,5}
a.remove(3)
a
{1,2,4,5}
a.clear()
{}
4.并集,交集,差集

控制语句:
1.选择结构:
单分支结构
表示:
if 条件表达式
语句
其中条件表达式可以是逻辑表达式,关系表达式,算数表达式是
语句块可以是一条或者多条语句,缩进一致对齐
a = 3
if a<10
print(a)
条件表达式详解:
在选择和循环结构中,条件表达式值为false的情况:
False,0,0.0,空值None,空序列对象,空range对象,空迭代对象,其他情况均为Ttrue。Python所有的合法表达式都可以看作条件表达式,甚至包括函数调用的表达式
双分支结构
a = 3
if a<10
print("")
else
print("")

三元条件运算符
num = input(“请输入一个数字”)
print(num if int(num<10 else"数字太大")
Python 提供了三元运算符,用来在某些简单分支赋值情况,三元条件运算符语法格式:
条件为真的值 if(条件表达式)else 条件为假的值

多分支结构
在这里插入图片描述
多分支选择结构的语法格式:
if 条件表达式1:
语句1
elif:
语句2
else:
语句3
多分支结构,几个分支是有逻辑关系的,不能随意颠倒顺序

练习:在这里插入图片描述
score =int( input(“请输出成绩”))
if score <60:
print(“不及格”)
elif score<80: #不用再写60<=score<80,因为已经是Fales的条件下
print(“及格”)
elif score<89:
print(“良好”)
else:
print("")

选择结构的嵌套:
在这里插入图片描述
score = int(input(“输入0-100的数字”))
grade = “”
if score<0 or score>100:
score = int(input(“输入错误,请重新输入”))
else:
if score>=90:
grade = “a”
elif score >=80:
grade = “b”
elif score>=60:
grade = “c”
else:
grade = “d”
print("分数为{0},等级为{1} ".format(score,grade))

代码2:
score = int(input(“请输入分数”))
a = “ABCDE”
b = 0
if score>100 or score<10:
print(“输入错误”)
else:
b = score//10
if b <6:
b = 5
print(a[9-b])

循环结构:
在这里插入图片描述

while循环:
在这里插入图片描述
用while打印0-10数字
num = 0
while num<=10:
print(num,end"\t")
num+=1

计算1-100的累加和
a = 1
b = 0
while a<100:
b = b+a
a+=1

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值