python入门基础学习之数据容器:dict(字典、映射)

数据容器:dict(字典、映射)

为什么要使用字典?
因为可以使用字典,实现用key取出Value的操作

字典的定义

字典的定义,同样使用{},不过存储的元素是一个个的键值对:
①使用{}存储原始,每一个元素是一个键值对
②每一个键值对包含Key和Value(用冒号分隔)
③键值对之间使用逗号分隔
④Key和Value可以是任意类型的数据(key不可为字典)
⑥Key不可重复,重复会对原有数据覆盖

语法:
定义字典变量:
my_dict={key:value,key:value,…,key:value}
定义空字典2种方式:
①my_dict={}
②my_dict=dict()

示例:

# 定义字典
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)}")

# 定义重复key的字典
my_dict1 = {
    
    "二狗": 99, "二狗": 88, "大白": 77}
print(f"重复key的字典内容是:{
      
      my_dict1}")  # 字典不允许重复,新的会覆盖旧的,所以会保留最后一个

运行结果:

字典1的内容是:{‘二狗’: 99, ‘小胖’: 88, ‘大白’: 77},类型:<class ‘dict’>
字典2的内容是:{},类型:<class ‘dict’>
字典3的内容是:{},类型:<class ‘dict’>
重复key的字典内容是:{‘二狗’: 88, ‘大白’: 77}

字典数据的获取

字典同集合一样,不可以使用下标索引
但是字典可以通过Key值来取得对应的Value

字典的嵌套

字典的Key和Value可以是任意数据类型(Key不可为字典)
那么,就表明,字典是可以嵌套

嵌套字典的内容获取

示例:

# 从字典中基于key获取value
my_dict1 = {
    
    "二狗": 99, "小胖": 88, "大白": 77}
score = my_dict1["二狗"]
print(f"二狗的分数是:{
      
      score}")

# 字典的嵌套
stu_score_dict = {
    
    
    "二狗": {
    
    "语文": 99,
             "数学": 88,
             "英语": 77},
    "小胖": {
    
    "语文": 90,
             "数学": 80,
             "英语": 70},
    "大白": {
    
    "语文": 95,
             "数学": 85,
             "英语": 75},
}
print(f"学生的考试信息是:{
      
      stu_score_dict}")
# 从嵌套字典中获取数据
# 看一下二狗的数学成绩
score = stu_score_dict["二狗"]["数学"]
print(f"二狗的数学成绩是:{
      
      score}")

运行结果:

二狗的分数是:99
学生的考试信息是:{‘二狗’: {‘语文’: 99, ‘数学’: 88, ‘英语’: 77}, ‘小胖’: {‘语文’: 90, ‘数学’: 80, ‘英语’: 70}, ‘大白’: {‘语文’: 95, ‘数学’: 85, ‘英语’: 75}}
二狗的数学成绩是:88

字典的注意事项

键值对的Key和Value可以是任意类型(Key不可为字典)
字典内Key不允许重复,重复添加等同于覆盖原有数据
字典不可用下标索引,而是通过Key检索Value

字典的常用操作

新增元素

语法:字典[Key] = Value,结果:字典被修改,新增了元素

注意:新增和更新元素的语法一致,如果Key不存在即新增,如果Key存在即更新(Key不可重复)

更新元素

语法:字典[Key] = Value,结果:字典被修改,元素被更新

注意:字典Key不可以重复,所以对已存在的Key执行上述操作,就是更新Value值

删除元素

语法:字典.pop(Key),结果:获得指定Key的Value,同时字典被修改,指定Key的数据被删除

清空字典

语法:字典.clear(),结果:字典被修改,元素被清空

获取全部的key

语法:字典.keys(),结果:得到字典中的全部Key

遍历字典

语法:for key in 字典.keys()

注意:字典不支持下标索引,所以同样不可以用while循环遍历

计算字典内的全部元素(键值对)数量

语法:len(字典)

结果:得到一个整数,表示字典内元素(键值对)的数量

示例:

# 定义一个字典
my_dict = {
    
    "ergou": 99, "dabai": 88, "xiaopang": 77}

# 新增元素
my_dict["erpang"] = 66
print(f"增加元素后:{
      
      my_dict}")
# 更新元素
my_dict["ergou"] = 55
print(f"更新元素后:{
      
      my_dict}")
# 删除元素
score = my_dict.pop("xiaopang")
print(f"字典删除一个元素后:{
      
      my_dict},xiaopang的分数是{
      
      score}")
# 清空元素,clear
my_dict.clear()
print(f"字典被清空了,内容是:{
      
      my_dict}")

# 获取全部的key
my_dict = {
    
    "ergou": 99, "dabai": 88, "xiaopang": 77}
keys = my_dict.keys()
print(f"字典的全部keys是:{
      
      keys}")

# 遍历字典
# 方式1:通过获取全部key来完成遍历
for key in keys:
    print(f"字典的keys是:{
      
      key}")
    print(f"字典的value是:{
      
      my_dict[key]}")

# 方式2:直接对字典进行for循环,每一次循环都是直接得到key
for key in my_dict:
    print(f"2字典的keys是:{
      
      key}")
    print(f"2字典的value是:{
      
      my_dict[key]}")

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

运行结果:

增加元素后:{‘ergou’: 99, ‘dabai’: 88, ‘xiaopang’: 77, ‘erpang’: 66}
更新元素后:{‘ergou’: 55, ‘dabai’: 88, ‘xiaopang’: 77, ‘erpang’: 66}
字典删除一个元素后:{‘ergou’: 55, ‘dabai’: 88, ‘erpang’: 66},xiaopang的分数是77
字典被清空了,内容是:{}
字典的全部keys是:dict_keys([‘ergou’, ‘dabai’, ‘xiaopang’])
字典的keys是:ergou
字典的value是:99
字典的keys是:dabai
字典的value是:88
字典的keys是:xiaopang
字典的value是:77
2字典的keys是:ergou
2字典的value是:99
2字典的keys是:dabai
2字典的value是:88
2字典的keys是:xiaopang
2字典的value是:77
字典的元素数量有:3

字典的常用操作总结

编号 操作 说明
1 字典[Key] 获取指定Key对应的Value值
2 字典[Key] = Value 添加或更新键值对
3 字典.pop(Key) 取出Key对应的Value并在字典内删除此Key的键值对
4 字典.clear() 清空字典
5 字典.keys() 获取字典的全部Key,可用于for循环遍历字典
6 len(字典) 计算字典内的元素数量

字典的特点

经过上述对字典的学习,可以总结出字典有如下特点:
1、可以容纳多个数据
2、可以容纳不同类型的数据
3、每一份数据都是Key:Value键值对
4、可以通过Key获取到Value,Key不可重复(重复会覆盖)
5、不支持下标索引
6、可以修改(增加或删除更新元素等)
7、支持for循环,不支持while循环

字典运用练习题:升职加薪

猜你喜欢

转载自blog.csdn.net/weixin_44996886/article/details/132678473