Day4:字典、集合与控制语句

1152-张同学

发表文章数:21

首页 » Python » 正文

Day4

字典

Day4:字典、集合与控制语句

字典的创建

  • 通过{},dict()来创建字典

    a = {"name": "gaoqi", "age": 18, "job": "programmer"}
    b = dict(name="gaoqi", age=18, job="programmer")
    c = dict([("name", "gaoqi"), ("age", 18)])
    print(a) #{'name': 'gaoqi', 'age': 18, 'job': 'programmer'}
    print(b) #{'name': 'gaoqi', 'age': 18, 'job': 'programmer'}
    print(c) #{'name': 'gaoqi', 'age': 18}
    
  • 通过zip()创建字典对象

    a = ["name", "age", "job"]
    b = ["gaoqi", 18, "programmer"]
    c = dict(zip(a, b))
    print(c)
    
  • 通过dict.fromkeys创建值为空的字典

    a = dict.fromkeys(["name", "age", "job"])
    print(a) #{'name': None, 'age': None, 'job': None}
    

字典元素的访问

  • 通过[键]获得“值”,若不存在,则报错。

    a = {"name": "gaoqi", "age": 18, "job": "programmer"}
    print(a['name']) #gaoqi
    
  • 通过get()方法获得“值得”。推荐使用!如果指定键不存在,返回None,也可以设定指定键不存在时默认返回的对象。

    print(a.get("age")) #18
    print(a.get("gender", "不存在")) #不存在
    
  • 列出所有键值对

    print(a.items())
    #dict_items([('name', 'gaoqi'), ('age', 18), ('job', 'programmer')])
    
  • 列出所有的键,列出所有的值

    print(a.keys()) #dict_keys(['name', 'age', 'job'])
    print(a.values()) #dict_values(['gaoqi', 18, 'programmer'])
    
  • len():返回键值对的个数

  • 检测一个键是否在字典中

    print("name" in a) #True
    

字典元素的添加、修改、删除

  • 给字典新增“键值对”。如果“键”已经存在,则覆盖旧的键值对,如果“键”不存在,则增加新的。

    a = {"name": "gaoqi", "age": 18, "job": "programmer"}
    a["address"] = "西三旗"
    a["age"] = 16
    print(a) #{'name': 'gaoqi', 'age': 16, 'job': 'programmer', 'address': '西三旗'}
    
  • 使用update()将新字典中所有的键值对全部添加到旧字典对象上。如果有key重复,则直接覆盖。

    b = {"name": "gao", "money": 10000, "gender": "男"}
    a.update(b)
    print(a)
    #{'name': 'gao', 'age': 16, 'job': 'programmer', 'address': '西三旗', 'money': 10000, 'gender': '男'}
    
  • 字典中元素的删除,可以使用del()方法:或者clear()删除所有键值对;pop()删除指定键值对,并返回对应的“值对象”;

    del(a["name"])
    print(a) #{'age': 16, 'job': 'programmer', 'address': '西三旗', 'money': 10000, 'gender': '男'}
    c = a.pop("money")
    print(c) # 10000:pop可以将删除的键值对的value返回给变量c
    print(a) #{'age': 16, 'job': 'programmer', 'address': '西三旗', 'gender': '男'}
    a.clear()
    print(a) #{}
    
  • popitem():Python 字典 popitem() 方法随机返回并删除字典中的最后一对键和值,如果字典已经为空,却调用了此方法,就报出KeyError异常。

Day4:字典、集合与控制语句

a = {'name': 'gao', 'age': 16, 'job': 'programmer', 'address': '西三旗', 'money': 10000, 'gender': '男'}
print(a.popitem())
print(a)
print(a.popitem())
print(a)
print(a.popitem())
print(a)
print(a.popitem())
print(a)

序列解包

序列解包可以用于元组、列表、字典。序列解包可以让我们方便对多个变量赋值。

x, y, z = (10, 20, 30)
print(x, y, z) #10 20 30

x, y, z = [10, 20, 30]
print(x, y, z) #10 20 30

[x, y, z] = [10, 20, 30]
print(x, y, z) #10 20 30

序列解包用于字典时,默认时对“键”进行操作;如果需要对键值对操作,则需要使用items;如果需要对“值”操作,则需要使用values();

a = {"name": "gaoqi", "age": 18, "job": "programmer"}
x, y, z = a  # 默认得到键
print(x, y, z) #name age job

x, y, z = a.items()
print(x, y, z) #键值对以元组的形式返回
#('name', 'gaoqi') ('age', 18) ('job', 'programmer')
print(x[0], x[1])
# name gaoqi
x, y, z = a.values()
print(x, y, z)
# gaoqi 18 programmer

表格数据使用字典和列表存储,并实现发访问

Day4:字典、集合与控制语句

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[1].get("salary"))
#20000

# 遍历所有人的薪资
for m in range(len(tb)):
    print(tb[m].get("salary"))

# 打印表的所有数据
for i in range(len(tb)):
    # print(tb[i].items())
    print(tb[i].get("name"), tb[i].get("age"), tb[i].get("salary"), tb[i].get("city"))

字典核心底层原理(hin重要)

Day4:字典、集合与控制语句
Day4:字典、集合与控制语句
Day4:字典、集合与控制语句
若未能找到为空的bucket值,则数组进行自动扩容。

根据键查找“键值对”的底层过程

Day4:字典、集合与控制语句
Day4:字典、集合与控制语句
Day4:字典、集合与控制语句

集合

集合是无序可变,元素不能重复,实际上,集合底层是字典实现,集合的所有元素都是字典中的“键对象”,因此是不能重复的且唯一的。

集合创建和删除

  • 使用{}创建集合对象,并使用add()方法添加元素
a = {3, 5, 7}
print(a) #{3, 5, 7}

a.add(9)
print(a) #{9, 3, 5, 7}
  • 使用set(),将列表、元组等可迭代对象转成集合。如果原来数据存在重复数据,则只保留一个
a = ['a', 'a', 'b', 'c']
print(set(a)) #{'a', 'c', 'b'}
  • remove()删除指定元素,clear清空整个集合
a = {10, 20, 30, 40, 50}
a.remove(20)
print(a) #{40, 10, 50, 30}

集合相关操作

a = {1, 3, 'sxt'}
b = {'he', 'it', 'sxt'}
# 并集
print(a|b)
print(a.union(b))
# {1, 'sxt', 3, 'he', 'it'}

# 交集
print(a&b)
print(a.intersection(b))
# {'sxt'}

# 差集
print(a-b)
print(a.difference(b))
# {1, 3}

控制语句

选择结构

Day4:字典、集合与控制语句

Day4:字典、集合与控制语句

单分支选择结构

Day4:字典、集合与控制语句

条件表达式详解

Day4:字典、集合与控制语句
Day4:字典、集合与控制语句

  • 条件表达式中,不能出现赋值符,即if语句中不能出现,如:if a = b,系统会报错。

双分支选择结构

Day4:字典、集合与控制语句

三元条件运算符

Day4:字典、集合与控制语句

s = input("请输入一个数字")
print("s是小于10的数字" if int(s) < 10 else "s是大于10的数字")

多分支选择结构

多分支结构的分支之间是有逻辑关系的,不能随意颠倒顺序。

Day4:字典、集合与控制语句

# 输入一个学生的成绩,将其转化成简单描述:不及格(小于60)、及格(60-79)、良好(80-89)、优秀(90-100)
score = int(input("请输入分数"))

if score < 60:
    grade = "不及格"

elif 60 <= score <= 79:
    grade = "及格"

elif 80 <= score <= 89:
    grade = "良好"

elif 90 <= score <= 100:
    grade = "优秀"

print("分数是{0},等级是{1}".format(score, grade))

选择结构嵌套

Day4:字典、集合与控制语句

# 输入一个分数。分数在0-100之间。90以上是A,80以上是B,70以上是C,60以上是D,60以下是E
score = int(input("请输入分数"))
if 100<score or score<0:
    print("输入错误,请输入0-100之间的数字")
else:
    if score>=90:
        grade = "A"
    elif score>=80:
        grade = "B"
    elif score >= 70:
        grade = "C"
    elif score >= 60:
        grade = "D"
    else:
        grade = "E"
    print("分数是{0},等级是{1}".format(score, grade))

Day4:字典、集合与控制语句

score = int(input("请输入分数"))
degree = "ABCDE"
num = 0
if 100 < score or score < 0:
    print("输入错误,请输入0-100之间的数字")
else:
    num = score // 10
    if num < 6: num = 5
    print("分数是{0},等级是{1}".format(score, degree[9 - num]))

循环结构

Day4:字典、集合与控制语句

  • while循环:

Day4:字典、集合与控制语句

# 计算1-100的累加和
num_2 = 0
sum_all = 0
while num_2 < 100:
    sum_all += num_2
    num_2 += 1
print(sum_all)

未经允许不得转载:作者:1152-张同学, 转载或复制请以 超链接形式 并注明出处 拜师资源博客
原文地址:《Day4:字典、集合与控制语句》 发布于2020-06-27

分享到:
赞(0) 打赏

评论 抢沙发

评论前必须登录!

  注册



长按图片转发给朋友

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏

Vieu3.3主题
专业打造轻量级个人企业风格博客主题!专注于前端开发,全站响应式布局自适应模板。

登录

忘记密码 ?

您也可以使用第三方帐号快捷登录

Q Q 登 录
微 博 登 录