Python学习-day13(数据容器-字典)

数据容器-字典

为什么要使用字典?

就像字典一样根据拼音查找字,Python中的字典就是根据Key查找Value。

字典的定义:

#定义一个字典
my_dict1={"王力鸿":99,"周杰轮":88,"林俊节":77}
#定义空字典
my_dict2={}
my_dict3=dict()
print(f"字典1的内容是:{my_dict1},类型是{type(my_dict1)}")
print(f"字典2的内容是:{my_dict2},类型是{type(my_dict2)}")
print(f"字典3的内容是:{my_dict3},类型是{type(my_dict3)}")

结果:

字典1的内容是:{'王力鸿': 99, '周杰轮': 88, '林俊节': 77},类型是<class 'dict'>
字典2的内容是:{},类型是<class 'dict'>
字典3的内容是:{},类型是<class 'dict'>

 

字典和集合一样不能使用下标索引,不支持重复的Key,取值方式如下。

#定义重复Key的字典
my_dict1={"王力鸿":99,"王力鸿":88,"林俊节":77}
print(f"重复Key的字典的内容是:{my_dict1}")
#从字典中基于Key获取Value
my_dict1={"王力鸿":99,"周杰轮":88,"林俊节":77}
score=my_dict1["王力鸿"]
print(f"王力鸿的考试分数是:{score}")
score=my_dict1["周杰轮"]
print(f"周杰轮的考试分数是:{score}")

结果:

重复Key的字典的内容是:{'王力鸿': 88, '林俊节': 77}
王力鸿的考试分数是:99
周杰轮的考试分数是:88

字典的嵌套:

字典的Key和Value可以是任意数据类型(Key不可为字典)

那么就表明字典可以嵌套的。

可以这么理解,外层Key是姓名对应的Value是字典数据类型,然后内层字典的Key对应的是学科Value对应的是分数。

示例:
#定义嵌套字典
stu_score_dict={
    "王力鸿":{
        "语文":77,
        "数学":66,
        "英语":33,
    },"周杰轮":{
        "语文":88,
        "数学":86,
        "英语":55,
    },"林俊节":{
        "语文":96,
        "数学":99,
        "英语":66,
    }
}
print(f"学生考试的信息是:{stu_score_dict}")
#从嵌套的字典中读取信息
#看周杰轮的语文信息
score=stu_score_dict["周杰轮"]["语文"]
print(f"周杰轮的语文分数是:{score}")
score=stu_score_dict["林俊节"]["英语"]
print(f"林俊节的英语分数是:{score}")

结果:

学生考试的信息是:{'王力鸿': {'语文': 77, '数学': 66, '英语': 33}, '周杰轮': {'语文': 88, '数学': 86, '英语': 55}, '林俊节': {'语文': 96, '数学': 99, '英语': 66}}
周杰轮的语文分数是:88
林俊节的英语分数是:66

字典的常用操作

1.字典的新增元素及更新元素
语法结构:

字典[Key]=Value

如果字典中没有该元素,就添加该元素,即新增元素。

如果字典中已经有了该元素,字典的Key不可以重复,如果对已有的元素执行以上操作,就是更改该元素,即更新元素。

示例:
my_dict={"周杰轮":99,"林俊节":88,"张学油":77}
#新增元素
my_dict["张信哲"]=66
print(f"字典经过新增元素后为:{my_dict}")
#更新元素
my_dict["周杰轮"]=33
print(f"字典经过更新后字典为:{my_dict}")

结果:

字典经过新增元素后为:{'周杰轮': 99, '林俊节': 88, '张学油': 77, '张信哲': 66}
字典经过更新后字典为:{'周杰轮': 33, '林俊节': 88, '张学油': 77, '张信哲': 66}


2.字典的删除元素
语法结构:

字典.pop(Key)

结果:获得指定Key的元素,并且删除。

示例:
#删除元素
score=my_dict.pop("周杰轮")
print(f"字典中被移除了一个元素,结果:{my_dict},周杰轮的考试分数:{score}")

结果:

字典中被移除了一个元素,结果:{'林俊节': 88, '张学油': 77, '张信哲': 66},周杰轮的考试分数:33

3.字典的清空元素
语法结构:

字典.clear()

示例:
#清空元素,clear
my_dict.clear()
print(f"字典被清空后的结果是:{my_dict}")

结果:

字典被清空后的结果是:{} 

4.获取全部的Key

这个方法可以帮助我们遍历字典。

语法结构:

字典.keys()

示例:
#获取全部的key
my_dict={"周杰轮":99,"林俊节":88,"张学油":77}
keys=my_dict.keys()
print(f"字典的全部keys是:{keys}")

结果:

字典的全部keys是:dict_keys(['周杰轮', '林俊节', '张学油']) 

5.遍历字典
方式1

通过获取所有的key,使用.keys()函数。

示例:
#遍历字典
for key in keys:
    print(f"字典的key是:{key}")
    print(f"字典的value是:{my_dict[key]}")

结果:

字典的key是:周杰轮
字典的value是:99
字典的key是:林俊节
字典的value是:88
字典的key是:张学油
字典的value是:77


方式2 

直接使用for循环遍历,因为不能使用下标索引,所以不能使用while循环遍历

示例
#直接遍历
for key in my_dict:
    print(f"2字典的key是:{key}")
    print(f"2字典的value是:{my_dict[key]}")

结果:

 2字典的key是:周杰轮
2字典的value是:99
2字典的key是:林俊节
2字典的value是:88
2字典的key是:张学油
2字典的value是:77

6.统计字典内的元素数量
语法结构:

变量=len(字典)

示例:
#统计字典内的元素数量,len()函数
num=len(my_dict)
print(f"字典中的元素数量有:{num}个")

结果:

字典中的元素数量有:3个

字典常用操作总结:

字典总结:

字典练习:

对级别1的员工升职到级别2,加薪1000。

my_dict={
    "王力鸿":{
        "部门":"科技部",
        "工资":3000,
        "级别":1
    },"周杰轮":{
        "部门":"市场部",
        "工资":5000,
        "级别":2
    },"林俊节":{
        "部门":"市场部",
        "工资":7000,
         "级别":3
    },"张学油":{
        "部门":"科技部",
        "工资":4000,
        "级别":1
    },"刘德滑":{
        "部门":"市场部",
        "工资":6000,
        "级别":2
    }
         }
print(f"全体员工当前信息如下:")
print(my_dict)
for key in my_dict:
    if my_dict[key]["级别"]==1:
        employee_info_dict=my_dict[key]
        employee_info_dict["级别"]=2
        employee_info_dict["工资"]+=1000
        my_dict[key]=employee_info_dict
print(f"对员工进行升职加薪之后的结果是:\n{my_dict}")

结果:

全体员工当前信息如下:
{'王力鸿': {'部门': '科技部', '工资': 3000, '级别': 1}, '周杰轮': {'部门': '市场部', '工资': 5000, '级别': 2}, '林俊节': {'部门': '市场部', '工资': 7000, '级别': 3}, '张学油': {'部门': '科技部', '工资': 4000, '级别': 1}, '刘德滑': {'部门': '市场部', '工资': 6000, '级别': 2}}
对员工进行升职加薪之后的结果是:
{'王力鸿': {'部门': '科技部', '工资': 4000, '级别': 2}, '周杰轮': {'部门': '市场部', '工资': 5000, '级别': 2}, '林俊节': {'部门': '市场部', '工资': 7000, '级别': 3}, '张学油': {'部门': '科技部', '工资': 5000, '级别': 2}, '刘德滑': {'部门': '市场部', '工资': 6000, '级别': 2}}


不积跬步无以至千里,不积小流无以成江海。 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值