美文网首页
2018-08-28-day07-字典和集合

2018-08-28-day07-字典和集合

作者: oxd001 | 来源:发表于2018-08-28 20:42 被阅读0次

    一、字典

    1.字典(dict):字典是容器类型的数据,也是序列,以键值对作为元素(字典里面存的数据全是成对出现的)

    键值对:key:value
    {key1:value1,key2:value2,...}

    键:(key)字典中的key值要唯一,并且数据是不可变的数据类型(数字、布尔、字符串和元组,推荐使用字符串):
    值:(value)可以不唯一,可以是任何类型的数据

    2.声明字典

        dict1 = {'1':100,'a':97,True:'布尔'}
        person = {'name':haha,'age':23,'work_age':5}
    
        person3={}  #空的字典
    

    3.获取字典的元素对应的值(字典存数据,实质还是存的value,key是获取value的手段)

    字典[key]---通过key获取值

    4.字典的是可变的(增删改)---可变指的是字典中的键值对的值和个数可变的

    1).查:获取值
    字典[key]---通过key获取值

    通过字典[key]获取value的时候,如果key不存在就会发生KeyError异常
    字典.get(key)---这样获取字典的value值,如果获取的key值不存在,不会报错,返回的结果是None

            perosn.get('name')
            person.get('sex')   #None
    

    总结:确定key值肯定存在的时候用[]语法获取value,key值可能不存在,不存在的时候希望报错用[],想要自己对它进行特殊处理的时候使用get获取value

    2)遍历字典:直接遍历取到的是字典的所有key值

            for key in person:
                print(person[key])
    

    3).改(修改key对应的value)
    字典[key]=new_value

    4).增(添加键值对)
    字典[key] = 值 #key本来不存在对应的是增加

    5)删(删除键值对)
    del 字典[key]

            del person['sname']
    

    字典.pop(key):将字典里的指定的key的value取出,并将原来的键值对删除

    name = person.pop('name')
    person ={'name':'张三','age':24,'grade':90}
    if person.get('sex')==None:
        person['sex']='男'
    

    5.字典的运算

    1).字典不支持'+'和'*'
    2). in 和not in:是判断key值是否存在

    computer = {'brand':'联想','color':'black' }
    

    3)len(字典):看字典有几个键值对

    len(computer)   
    

    6.字典的方法

    a.字典.clear():删除字典中的所有元素(键值对)

            computer.clear()
            print(computer)
    

    b.字典.copy():拷贝字典中的所有元素,放到一个新的字典中

            dict1={'a':1,'b':2}
            dict2 = dict1 #将dict1中的地址赋给dict2,两个变量指向同一块内存区域
            dict3=dict2.copy() #将dict1中的内存复制到一个新的内存区域中然后将新的地址给dict3
    

    7.dict.fromkeys(序列,默认值=None)

    将序列中的每个值作为key,默认值为value创建一个新的字典
    注意:默认值可以不写,写的话只能写一个值

    print(dick.fromkeys('abc',0)) #{'a':0,'b':0,'c':0}
    

    8.字典.keys()

    获取字典中的所有key,以dict_keys列表的形式返回

            print(dict1.keys())
    

    9.字典.values()

    获取字典中的所有的value

    10.字典.items():以元组形式获取字典的每个键值对,这种方式不推荐使用,对cpu的消耗更大,因为要先进行转换dict.items()

            for key,value in dict.items():
    

    11.字典.setdefault(key,默认值=None):给字典添加键值对,如果key存在,这个方法无作为

        dict1.setdefault('ab','abc')
        dict1.setdefault('dd')
        print(dict1)
    

    12.字典1.update(字典2):将字典2中的键值对更新到字典1中,如果字典2中key在字典1中存在,就用字典2中key对应的值取更新字典1中的值,如果不存在就添加到字典1中

        dict1={'a':1}
        dict2={'b':2,'a':2}
        dict1.update(dict2)
        print(dict1)
        #{'a':2,'b':2}  
        `print(key,value)
    print(person)
    

    学生管理系统
    1.一个系统可以存储多个学生
    2.一个学生可以存储:姓名,电话,籍贯,专业,学号等等
    3.添加学生
    4.删除学生
    5.修改学生的信息

    studnet_system = 列表

    什么使用列表?什么时候使用字典
    1.保存的多个数据的类型都是同一个类型对象时候,用列表
    例如:声明一个变量保存所有数学成绩,声明一个变量保存所有的学生信息
    2.保存的多个数据的类型不同,使用字典

    1.列表中有字典

        student_system=[
        {'name':'stu1','age':18},
        {'name':'stu2','age':19}
        ]
    
        print(student_system[0]['name'])
    

    2.字典中有列表

        py_class={
        'class_name':'python1806',
        'students':[
        {'name':'stu1','age':18},
        {'name':'stu2','age':19}
        ]
        }
        print(py_class['students'][0]['name'])
    

    练习:在python1806中添加一个学生,学生的信息自己输入,名字、年龄和id

    py_class={
        'class_name':'python1806',
        'students':[
            {'name':'student1','age':20,'id':'001'},
            {'name':'student2','age':20,'id':'002'},
            {'name':'student3','age':20,'id':'003'}
        ]
    }
    name=input("请输入姓名:")
    age=input('请输入年龄:')
    id_=input("请输入id:")
    student={'name':name,'age':int(age),'id':id_}
    py_class['students'].append(student)
    print(py_class['students'])
    

    练习:输入一个学生的姓名根据,姓名取删除对应的学生

    py_class={
        'class_name':'python1806',
        'students':[
            {'name':'student1','age':20,'id':'001'},
            {'name':'student2','age':20,'id':'002'},
            {'name':'student3','age':20,'id':'003'}
        ]
    }
    def input_message(py_class):
        name=input("请输入姓名:")
        age=input('请输入年龄:')
        id_=input("请输入id:")
        student={'name':name,'age':int(age),'id':id_}
        py_class['students'].append(student)
        print(py_class['students'])
    
    def del_student(py_class):
        name=input('请输入要删除学生的姓名:')
        students=py_class['students']
        for student in students:
            if student['name']==name:
                py_class['students'].remove(student)
                print('删除成功')
                exit(0)
        print('你输入的学生不存在')
    

    二、集合(set)

    集合是python中的一种容器类型的数据,无序的但是是可变的,值唯一(和字典的key一样)

    1.声明一个集合

    set1={数据1,数据2,...数据n}
    和数学里面的集合差不多

    sum(序列):python内置求序列的中元素的和的方法
    注意:将其他的序列转换成集合自带一个去重的功能

    set2 = set{'name name'}
    

    2.查(获取集合中的元素)

    集合是不能单独获取其中某一个元素的
    遍历获取每一个元素

        for item in set3:
            print(item)
    

    3.增(添加元素)

    a.集合.add(元素)

    set3.add('good')
    

    b.集合1.update(集合2):将集合2中的元素,添加到集合1中

    set3.update({1,2,3})
    

    4.删:删除元素只有remove

    集合.remove(元素)

    set3.remove('abc')
    

    5.改(改不了)

    6.数学相关的集合运算

    a.判断包含情况
    集合1>=集合2(判断集合1中是否包含集合2)
    集合1<=集合2(判断集合2中是否包含集合1)

    print(set1 >= set2)
    

    b.并集:|
    两个集合合并

    set1={1,2,3}
    set2={2,3,4,5}
    print(set1 | set2)  #1,2,3,4,5
    

    c:交集:&
    两个集合公共部分

        print(set1 & set2)  #2,3
    

    d:差集:-

        print(set2-set1)    #1
    

    e:补集:^
    两个集合除了公共部分以外的部分
    print(set1^set1) #1,4,5

    相关文章

      网友评论

          本文标题:2018-08-28-day07-字典和集合

          本文链接:https://www.haomeiwen.com/subject/aazqwftx.html