zoukankan      html  css  js  c++  java
  • 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'] 集合去重后是无序的,顺序是变化的
    
    
  • 相关阅读:
    jquery easy ui 学习 (8)basic treegrid
    jquery easy ui 学习 (7) TreeGrid Actions
    jquery easy ui 学习 (6) basic validatebox
    jquery easy ui 学习 (5) windowlayout
    jquery easy ui 学习 (4) window 打开之后 限制操纵后面元素属性
    提示“应用程序无法启动,因为应用程序的并行配置不正确”不能加载 System.Data.SQLite.dll
    visual studio 添加虚线的快捷键
    VS2010打开项目时,出现“已经在解决方案中打开了具有该名称的项目”问题的解决方案
    visual studio 编译时 出现 Files 的值 乱码
    微信 连接被意外关闭
  • 原文地址:https://www.cnblogs.com/ananmy/p/12748491.html
Copyright © 2011-2022 走看看