• python基础语法 第4节课 (字典 元组 集合)


    一、字典---存储多个数据的无序的 可变的 以键值对表示的数据类型  

    字典表示

    1.字典的定义 dictionary

    2.关键字 dict 除列表以外python之中最灵活的内置数据结构类型,字典是无序的对象集合

    3.字典用{}标识

    4.字典是无序的对象集合

    5.用key:value 的形式存储数据 键值对的方式   {key: value, key1: value1, key2: value2}

      注:列表存储多个数据的时候,并不知道元素具体表示的含义。

            字典:用key:value ,可以表示出每个元素的具体含义

    dict1 = {'name':'Lili','age':'18','gender':'girl'}

     6.字典 key的硬性要求:

      key:是唯一的不可变的数据(int float tuple boolen str)除此以外,其他的类型都不支持做key(列表,字典不能作为key,因为它们是可变的)

      value:任何数据类型都支持

    注:key大多数都是用str

           如果报错类型是unhashable,说明key是可变的类型,要修改key的类型.

    字典的常用操作

    1.空字典

    d = {}

    2.定义一个字典

    不能用字典 列表作key

    #定义一个字典 key:value
    d={1:(1,2,3),0.02:False,True:'result','name':0.02}#True也可表示1,所有输出结果,1:'result'
    print(d)
    结果:{1: 'result', 0.02: False, 'name': 0.02}#多次输出结果的顺序都是不一样的,体现无序

     ❤字典的key必须是唯一的不重复的,如果出现重复的,后面的值会把前面的值覆盖掉。上例中的1等同与True,后面的‘result’会把前面的(1,2,3)给覆盖掉

     ❤ 报keyerror 说明字典的key有问题

    3.字典的取值:根据key取值,没有索引,没有切片(因为有索引,就代表有顺序,列表,元组是有序的,字典是无序的)

    无序:就无法通过索引取值

    取值:根据key取值,即字典名[key]

    python3.8版本,字典的无序做了优化,老版本3.3,每次运行结果的顺序是一样的。

    d={1:(1,2,3),0.02:False,True:'result','name':0.02}#True也可表示1,所有输出结果,1:'result'
    print(d[0.02])

    结果:False

    4.字典的长度

    dict1 = {'name':'Lili','age':'18','gender':'girl'}
    print(len(dict1)) #3

    5.字典的基本操作------增删改查,都是根据key来操作

    ①查:根据key来查询

    d={'python':'29期','teacher':['华华','yuze','妮妮'],'vip':{1:'小李',2:'小张',3:'小赵'}}
    print(d['vip'])
    print(d['vip'][2])
    print(d['teacher'][1])

    结果:

    {1: '小李', 2: '小张', 3: '小赵'}
    小张
    yuze

    ②增 d[不存在的key]=新值

    ③改 d[存在的key]=新值

    主要区别就是key是不是已存在的,存在就是改,不存在就是增

    d={'python':'29期','teacher':['华华','yuze','妮妮'],'vip':{1:'小李',2:'小张',3:'小赵'}}
    d['vip']='vip学员'
    d['total']=999
    print(d)

    结果:{'python': '29期', 'teacher': ['华华', 'yuze', '妮妮'], 'vip': 'vip学员', 'total': 999}

     ④删除

    d.pop()(注意,是按照key来删除,其次没有列表里面默认删除最后一个的操作!!!)

    d.pop('vip')#根据key来删除

    d.clear()  清空字典

    d.popitem() 随机删除某个键值对

    6.字典的方法函数

    ①keys()  把字典的所有key放在一个列表里,以元组方式输出

    ②values() 把字典的所有value值放在一个列表里,以元组的方式输出

    ③items() 字典的中每个键值对放在一个元组里,元组再放在一个列表里,最后以元组方式输出

    dict1 = {'name':'python','clasee':29,'year':2020}
    print(dict1.keys())
    print(dict1.values())
    print(dict1.items())

    结果:

    dict_keys(['name', 'clasee', 'year'])
    dict_values(['python', 29, 2020])
    dict_items([('name', 'python'), ('clasee', 29), ('year', 2020)])

    7.字段的运算:减法运算、与运算

    d1 = {1: 11, 2: 22}
        d2 = {1: 11, 2: 31, 3: 44}
        c = d1.items() - d2.items()  # d1中删除跟d2相同的key:value,剩余的是返回值
        e = d2.items() - d1.items()  # d2中删除跟d1相同的key:value,剩余的是返回值
        d = d1.items() & d2.items()  # d1 跟 d2的交集(与运算)
        print(c)  # {(2, 22)}
        print(e)  # {(2, 31), (3, 44)}
        print(d)  # {(1, 11)}

    灵活拷问:

    什么时候用字典?字典是用来存储数据的

    如果是顺序比较重要的,可修改的,就用列表。如果是可读性比较重要的,就用字典。(当值是用来成对存储的时候,例如,学生对应的成绩)

    举例:测试登录,注册场景,设计测试用例。

    数据分析:

    登录地址      方法        数据

      /login           GET     caojuan

     register        POST   longlong

    case = [

    {'url':'/login','method':'GET','data:'caojuan'},

    {............},

    {.............}

    ]

    二、元组---不可变

    1.元组的表示:()

    2.元组与列表一样,也是一种序列,唯一不同的是元组不能修改。

    创建和访问元组(元组最重要的是小括号()、逗号)

    1.空元组() 

    2.不带小括号的元组

     tuple1 = 1,2,3

    3.带小括号的元组

     tuple2 = (1,2,3,4)

    ❤❤注意:元组中只有一个元素,需要加上逗号;不加逗号的话,其数据类型就是这个元素的数据类型,不是元组了。

    4.一个元素的元组

    names = ('hello')  == 'hello'
    print(len(names)) #5
    #加逗号 names = ('hello', ) print(len(names)) # 1 print(type(names)) # tuple

    5.元组的重复

    tuple3 = (8,)
    print(tuple3*8)#(8, 8, 8, 8, 8, 8, 8, 8)

    (8,)是元组,此时的*不是乘号,而是重复操作符。

    索引、更新和删除元组

    1.元组是有序的,可以通过索引操作

    tuple4 =  ('polo','Emma','Dinal','Jones')
    print(tuple4[2])  #Dinal

    2.元组是不可修改的序列,又怎么进行更新呢?------利用切片方式,实现元组的连接

    #在'Emma'和'Dinal'之间插入'Lili'
    tuple4 =  ('polo','Emma','Dinal','Jones')
    tuple4 =  tuple4[:2] + ('Lili',) + tuple4[2:]
    print(tuple4)      # ('polo', 'Emma', 'Lili', 'Dinal', 'Jones')

    3.删除元组  del

    4.元组的拆包,解包

    a, b, c = ('hello', 'love', 'python')
    print(a)   #hello
    print(b)   #love
    print(c)   #python

    赋值号= 前面的变量(a,b,c)的个数与元组的元素个数一定要相同,否则会报错

    元组的相关操作符

    1.重复操作符*(8 *(8,))

    2.逻辑操作符 and  or

    3.成员关系操作符 in, not in

    4,拼接操作符+(拼接操作符两边的元素类型要一致)

    5,关系操作符(>, >=,<,<=)

    什么时候用元组

    1.在信息不能进行修改的情况下,用元组

    2.元组的性能要强于列表(测试的时候感受不到,基本上用列表就够 了)

    三、集合 set

    1.集合的表示方法 :{ }   

    {“hello”,“python”,“lemon”,”vip”}

    2.集合与字典的区别;集合是没有key的

    my_set = {'hello','python','lemon','vip'}
    print(my_set)  #{'lemon', 'hello', 'python', 'vip'}
    print(len(my_set))# 4

    3.集合是无序的 可变 ====→不能索引

    可以通过内置函数()来操作,暂时不讲。

    4. ❤集合的主要作用:去重

    set会把重复的元组覆盖掉

    my_set = {'hello','python','lemon','vip','python','hello','python'}
    print(my_set)  #{'python', 'vip', 'lemon', 'hello'}
    print(len(my_set)) #4

    面试题:

    把下面的列表去除重复元素

    list1=['hello','python','lemon','vip','python','hello','python']
    print(list(set(list1))) #['python', 'vip', 'lemon', 'hello'] 集合去重后是无序的,顺序是变化的
    
    
  • 相关阅读:
    IdentityServer4学习笔记
    常用链接地址
    c++ 多线程(2000个)端口扫描(附源码)
    C++ 定时器Timer在项目中的使用
    [Under the hood]---Matt Pietrek October 1996 MSJ
    [under the hood]Reduce EXE and DLL Size with LIBCTINY.LIB
    TN035: Using Multiple Resource Files and Header Files with Visual C++
    单文件版本的netframework的net core 2.1
    Dependency Walker的替代品Dependencies
    怎么使用gradle给spring 打thinjar(gradle 7)
  • 原文地址:https://www.cnblogs.com/ananmy/p/12748491.html
Copyright © 2020-2023  润新知