2022.09.27 周二

2022.09.27 周二

字典
1.字典的作用

需求:定义一个变量保存一个学生的信息

2.字典和列表的选择

如果要保存多个意义不同的数据,就是用字典;需要保存多个意义相同的数据就用列表

3.什么是字典(dict)

字典是系统类型,属于容器型数据类型(序列)

将{}作为容器的标志,里面多个键值对(元素)用逗号隔开:{键1:值1,键2:值2,键3:值3,……}

可变(支持增删改操作);无序(不支持下标操作;顺序不影响结果)

键——必须是不可变类型的数据(数字,字符串,布尔,空值,元祖);键唯一

值——没有要求(任何类型的数据)

空字典

4. 字典的经典操作

字典存储的数据真正想要保存的是值,键只是用来对值进行区分和说明的(相当于列表中元素的下标)

1.查
  • 1.查单个 ——获取单个值

    • 字典[键] ——获取字典中指定键对应的值,键不存在时,程序报错
    • 字典.get(键) ——获取字典中指定键对应的值,键不存在时,不会报错,返回空值None
    • 字典.get(键,默认值)——获取字典中指定键对应的值,键不存在时,不报错,返回默认值
  • 2.生活中列表和字典

    # 需求:结合实际定义一个变量保存一个班级的信息
    # 班级信息:班级名、教室、讲师、班主任、学生
    class1 = {
        'className': 'Python2205',
        'classRoom': '11教',
        'lecturer': {'name': '余婷', 'age': 18, 'tel': '13678192302', 'gender': '女'},
        'classTeacher': {'name': '燕子姐', 'age': 18, 'tel': '119', 'QQ': '8282821'},
        'students': [
            {'name': 'stu1', 'age': 19, 'tel': '1922333', 'gender': '男', 'linkman': {'name': '张三', 'tel': '11923'}},
            {'name': 'stu2', 'age': 28, 'tel': '8727832', 'gender': '男', 'linkman': {'name': '小明', 'tel': '19202'}},
            {'name': 'stu3', 'age': 30, 'tel': '291912', 'gender': '女', 'linkman': {'name': '李四', 'tel': '1910283'}},
            {'name': 'stu4', 'age': 17, 'tel': '2349183', 'gender': '男', 'linkman': {'name': '老王', 'tel': '109221567'}},
            {'name': 'stu5', 'age': 16, 'tel': '27273482', 'gender': '女', 'linkman': {'name': '王五', 'tel': '119283427'}},
            {'name': 'stu6', 'age': 22, 'tel': '1242402', 'gender': '男', 'linkman': {'name': '赵六', 'tel': '2091834'}}
        ]
    }
            
        ]
    }
    
  • 遍历字典 ——一个一个的获取字典所有的值

    • 方法1:

      for 变量 in 字典:

      ​ 循环体(变量获取到的是字典的不是值)

    • 方法2:

      for 变量1,变量2 in 字典.items():

      ​ 循环体(变量1依次取到的是所有的,变量2依次取到的是

2.增(添加键值对)、改(修改某个键对应的值)
  • 字典[键] = 值 ——如果键不存在就添加键值对;如果键存在就修改指定键对应的值
  • 字典.setdefault(键,值) ——添加键值对(只会在键不存在的时候实现添加的功能,键存在无作为)
3.删——删除键值对
  • del 字典[键] ——删除指定键对应的键值对
  • 字典.pop(键) ——取出字典中指定键对应的值,并且返回
5.字典的相关操作
  • 字典不支持+、 =和比较大小,只支持比较是否相等

  • in 和 not in ——判断字典中是否存在指定的键

    • 键 in 字典
    • 键 not in 字典
  • len(字典) ——获取字典有多少个键值对

  • dict(数据) ——将指定数据转换成字典

    数据的要求:1.数据本身是一个序列

    ​ 2.大序列中的每个元素是有且只有两个元素的小序列,并且小序列一个元素是不可变类型的数据

6.字典的相关函数
1.字典.clear() ——清空字典
2.字典.copy() ——复制字典产生一个一模一样的新字典,并且将新的字典返回

拷贝——复制数据产生一个一模一样的新数据

  • 直接赋值和拷贝的区别

    • 直接赋值赋的是地址
    • 拷贝是赋值元数据产生一个一模一样的新数据,并且将新的数据的地址返回
  • 浅拷贝和深拷贝

    • 浅拷贝:列表.copy()、字典.copy()、列表[:]、copy(可变数据)

      只拷贝对象本身,对象中的子对象不拷贝

    • 深拷贝:deepcopy(可变数据)

      既拷贝对象本身,也拷贝对象中的子对象

      
      
3.
  • 字典.keys() ——获取字典所有的键并且返回
  • 字典.values() ——获取字典所有的值并且返回
  • 字典.items() ——将字典中的每个键值对转换一个一个的元组作为序列中的元素返回
4.字典1.update(字典2) ——将字典2中的键值对全部添加到字典1中

如果字典2中的某个键值对在字典1中已经存在,该键值对会覆盖字典1的内容

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值