美文网首页
2018-08-28 day7 python基础 字典和集合(含

2018-08-28 day7 python基础 字典和集合(含

作者: nothingpy | 来源:发表于2018-08-28 11:18 被阅读0次

    1.字典(dict)

    一.字典是容器类型(序列 ),以键值对作为元素。字典里面存的数据全是以键值对的形式出现的
    b/键值对----> 键:值(key:value)

    dict1 = {'key1':value1,'key2':value2 }
    ditc2 = {}  #空的字典
    '''
    键(key):要唯一,不可变的(字符串,数字,布尔,元组---->推荐使用字符串)
    
    值(value):可以不唯一,可以是任何类型的数据。
    '''
    

    A.字典是可变的(增删改查) ----->可指的是字典中的键值对的值和个数可变
    1.获取字典的元素对应的值(字典存数据,实质还是存的value,key是获取vlaue的手段)。(查)

    '''
    (—)
    value = 字典 [key] #key不存在会报错KeyError
    dict1 = {'key1':value1,'key2':value2 }
    value1 = dict1 ['key1']
    '''
    
    '''
    (二)
    dict1 = {'key1':value1,'key2':value2 }
    print(dict1.get(key1))   # 结果是value1
    如果key1不存在,返回None.
    '''
    '''
    总结:
    a.确定key肯定存在的时候用 dict['key]'获取value
    b.不确定key是否存在,不存在的时候不希望报错,而是想要自己对它进行特殊处理的时候使用dict.get('key')
    '''
    

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

    '''
    person = {'name':'txf','age':18,'grade':90}
    
    for x in person:
        print(x,end=' ')
    结果:name age grade 
    '''
    

    B.改(修改key对应的value)

    '''
    字典 [key] = 新值  #key是存在的
    '''
    

    C.增加(添加键值对)

    '''
    字典 [key] =值     #key不存在的
    注意:
    当key是存在的时候,表达修改,如果key不存在则表示添加。
    '''
    

    D.删(删除键值对)

    '''
    一
    del 字典[key]    #删除键值对
    
    二
    字典.pop(key)  #和list的用法差不多是拿出来。
    '''
    

    二:字典相关操作
    a.

    '''
    a.字典不支持 '+' 和  '*'
    b.字典支持 in 和 not in (判断key是否存在)
    c.字典支持len()
    '''
    

    b.相关的方法
    1.字典.copy()

    '''
    拷贝字典中的所有的元素,放到一个新的字典中。
    '''
    '''
    dict1 = {'a':1,'b':2}
    dict2 = dict1 #将dict1中的地址赋给对dict2,两个变量指向同一个地址
    
    dict3  = dict1.copy()  #将dict1中的内容复制到一个新的内存区域,然后将新的地址给dict3
    '''
    

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

    '''
    a.将序列中的每个值作为key,默认值为value创建一个新的字典
    b.注意:默认值可以不写,写的话只能写一个值
    
    dict1 = dict.fromkeys('abcdefg','txf')
    print(dict1)
    {'a': 'txf', 'b': 'txf', 'c': 'txf', 'd': 'txf', 'e': 'txf', 'f': 'txf', 'g': 'txf'}
    '''
    

    3.字典.keys() #获取字典中的所有的key,以dict_keys的形式返回(可以遍历 类似list)

    dict1 = {'a': 'txf', 'b': 'txf', 'c': 'txf', 'd': 'txf', 'e': 'txf', 'f': 'txf', 'g': 'txf'}
    print(dict1.keys(),type(dict1.keys))
    结果:
    dict_keys(['a', 'b', 'c', 'd', 'e', 'f', 'g']) <class 'dict_keys'>
    

    4.字典.value() #和 字典.keys() 类似 是获取字典中的所有的value。

    5.字典.items() #获取key,value以元组的形式返回(不推荐使用,消耗CPU)。

    dict1 = {'a': 'txf', 'b': 'txf', 'c': 'txf', 'd': 'txf', 'e': 'txf', 'f': 'txf', 'g': 'txf'}
    
    print(dict1.items())
    for k ,v in dict1.items():
        print(k,v,end=' ')
    '''
    dict_items([('a', 'txf'), ('b', 'txf'), ('c', 'txf'), ('d', 'txf'), ('e', 'txf'), ('f', 'txf'), ('g', 'txf')])
    a txf b txf c txf d txf e txf f txf g txf 
    '''
    

    6.字典.setdefault(key,默认值=None) #给字典添加键值对,如果key存在,则不会生效

    dict1 = {'a': 'txf', 'b': 'txf', 'c': 'txf'}
    dict1.setdefault('ab',123)
    print(dict1)
    '''
    {'a': 'txf', 'b': 'txf', 'c': 'txf', 'ab': 123}
    '''
    

    7.字典1.update(字典2) #将字典2中的键值对更新到字典1中。更新方式:如果字典2的key,在字典1中是存在的,就字典2中的值取更新字典1中的值,如果不存在就添加到字典1中、

    dict1 = {'a': 'txf', 'b': 'txf', 'c': 'txf'}
    dict2 = {1:1,2:2}
    dict2.update(dict1)
    print(dict2)
    '''
    {1: 1, 2: 2, 'a': 'txf', 'b': 'txf', 'c': 'txf'}
    '''
    
    字典相关函数.png

    2 列表和字典的组合使用

    1.什么时候用列表,什么时候用字典

    '''
    a.保存的多个数据的类型是同一个类型的时候,用列表
    b.保存的多个数据的类型不同,就使用字典。
    '''
    

    2.字典里面可以有list,list里面也可以有字典

    a ={1:[1,2],2:[2,3]}
    b =[{1,2,3},4,4]
    
    student_system = {'class_name':'python1806',
                      'students':[
                          {'name':'student1','age':21,'id':'001'},
                          {'name':'student2','age':22,'id':'002'},
                          {'name':'student3','age':23,'id':'002'}
                                 ]
                      }
    '''
    22
    '''
    
    '''
    #学生管理系统
    # 1.一个系统可以存储多个学生
    # # 2.一个学生可以存储:姓名,电话,籍贯,专业,学号等等
    # # 3.添加学生
    # # 4.删除学生
    # # 5.修改学生的信息
    
    student_system = {'class_name':'python1806',
                      'students':[
                          {'name':'student1','age':21,'id':'001'},
                          {'name':'student2','age':22,'id':'002'},
                          {'name':'student3','age':23,'id':'003'}
                                 ]
                      }
    print(student_system['students'][1]['age'])  # 打出这个 22
    student_system['students'][1]['name'] = 'txf' # 把student2变成txf
    
    # 添加一个学生信息
    dict1 = {'name': 'student4','age': 24,'id': '004'}
    student_system['students'].append(dict1)
    
    #删除学生信息
    user_input = input('请输入学生的姓名:')
    for x in  student_system['students'][:]:
        if x['name'] == user_input:
            student_system['students'].remove(x)
        else:
            print('系统没得这个人的,请重新输入:')
    print(student_system)
    '''
    

    3.集合(set)

    集合是python中的一种类型:无序的,可变的,值是唯一的
    a.声明一个集合

    '''
    set1 = {1,2,3,4,5,'abc',True}
    print(set1,type(set1)
    
    set2 = set('asakjdhksawawda')  #将其他的序列转换成集合,自带一个去重的功能
    print(set2) 
    
    {1, 2, 3, 4, 5, 'abc'} <class 'set'>
    {'a', 'k', 'h', 's', 'j', 'w', 'd'}
    '''
    '''
    注意:除了容器类型,其他的基本都可以(数字,布尔和字符串是可以的)
    '''
    

    b.集合里面的操作
    A.获取元素(集合是不能单独获取其中的某一个元素的)只能遍历获取每个元素(查)

    '''
    for x in set3:
           print(x)
    
    '''
    

    B.增(添加元素)
    1.集合.add('good')

    '''
    set3.add(12)
    set3.add('wda')
    '''
    

    2.集合1.update(集合2) # 将集合2的元素添加到集合1(有过滤的)

    '''
    set3.update()
    '''
    

    3.删
    集合.remove()

    '''
    set3.remove()
    set3.clear()  #全部删  结果是-----> set()
    '''
    

    C.数学相关的集合运算

    '''
    a.判断包含情况:
    集合1 >=集合2      #判断集合1是否包含集合2
    集合1 <= 集合2     # 判断集合2是否包含集合1
    
    b.求并集: |
    集合1 | 集合2 #求并集
    
    c.求交集:&
    集合1 & 集合2 #求交集
    
    d.求差集: -
    集合1 - 集合2 #求差集
    
    e.求补集:^
    集合1-集合2  #集合1和集合2除了公共部分剩下的
    '''
    

    作业

    作业.png
    number_id = 0
    student_message = {str(number_id):['stu1','男',123,'吃']}
    
    
    def add_student(n,message_list):
        user_name = input('请输入你的名字:')
        user_sex  = input('请输入你的性别:')
        user_tel  = input('请输入你的电话:')
        user_hobby = input('请输入你的爱好:')
        str1 = str(n)
        message_list[str1] = [user_name,user_sex,user_tel,user_hobby]
    
    
    
    def select_student(message_list):
        user_input = input('请输入姓名或者学号:')
        print_count = []
        if user_input.isdigit():
            user_message = message_list[user_input]
            print(user_message)
            print('姓名:%s' % user_message[0],end=' ')
            print('学号:%s' % user_input)
            print('性别:%s' % user_message[1],end=' ')
            print('电话:%s' % user_message[2],end=' ')
            print('爱好:%s' % user_message[3])
        elif user_input.isalpha():
            message_dict = message_list.values()
            for x in message_dict:
                for y in x:
                    if y == user_input:
                        for id in message_list:
                            if message_list[id][0] == user_input:
                                print_count.append(id)
                                if print_count.count(id) <= 1:
                                    print('姓名:%s' % user_input,end=' ')
                                    print('学号:%s' % id,end=' ')
                                    print('性别:%s' % message_list[id][1],end=' ')
                                    print('电话:%s' % message_list[id][2], end=' ')
                                    print('爱好:%s' % message_list[id][3])
        else:
            print('请重新输入')
            select_student(message_list)
    
    
    def del_student(message):
        user_input = input('请输入想删除的姓名或者id:')
        if user_input.isdigit():
            message.pop(user_input)
        else:
            count = 1
            print_count = []
            message_dict = message.values()
            for x  in message_dict:
                for y in x:
                    if y == user_input:
                        for id in message:
                             if  message[id][0] == user_input:
                                print_count.append(id)
                                a = {id: [y,message[id][1],message[id][2],message[id][3]],count:'None'}
                                if print_count.count(id) <= 1:
                                    print(count,' ',end=' ')
                                    print('姓名:%s 学号:%s 性别:%s 电话:%s 爱好:%s' % (a[id][0],id,a[id][1],a[id][2],a[id][3]))
                                    print(' ')
                                    count += 1
                             else:
                                 print("输入错误")
                                 del_student(message)
            else:
                user_select = input('请输入想删除的选项:')
                message.pop(user_select)
        # return (message)
    
    
    def select_all_student(student_message):
        for dict_info in student_message:
            message = student_message[dict_info]
            print('姓名:%s 学号:%s 性别:%s 电话:%s 爱好:%s' % (message[0],dict_info,message[1],message[2],message[3]))
    
    
    def update_student(student_message):
        user_input1 = input('请输入你的id:')
        user_input2 = input('请输入想修改的序号:1-姓名,2-性别,3-电话,4-爱好:请输入对应的数字:')
        user_input3 = input('请输入新的内容:')
        student_message[user_input1][int(user_input2)] = user_input3
    
    def main(number_id):
        while True:
            print('==================================================')
            print(' ' * 8 + '学生管理系统' + '')
            print('1.添加学生')
            print('2.查看学生')
            print('3.删除学生')
            print('4.查看所有学生信息(管理员)')
            print('5.修改学生信息')
            print('6.退出')
            print('==================================================')
            user_input1 = input('请输入想输入的:')
            if not user_input1.isdigit():
                print('请输入对应的数字:数字!!!!')
            else:
                user_input = int(user_input1)
                if user_input ==6:
                    break
                elif user_input == 1:
                    add_student(number_id+1,student_message)
                    number_id += 1
                elif user_input == 2:
                    select_student(student_message)
                elif user_input == 3:
                    del_student(student_message)
                elif user_input == 5:
                    update_student(student_message)
                elif user_input == 4:
                    a = input('请输入管理员姓名:')
                    b = input('请输入管理密码:')
                    if a == 'stu1' and b == 'stu1':
                        select_all_student(student_message)
                    else:
                        print('输入错误,请重新输入')
    
                else:
                    print('还没得这个功能的-----')
    
    if __name__ == '__main__':
        main(number_id)
    
    
    '''
    OK
    '''
    

    相关文章

      网友评论

          本文标题:2018-08-28 day7 python基础 字典和集合(含

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