美文网首页
python基础5-字典

python基础5-字典

作者: 乱弹琴给 | 来源:发表于2019-12-18 21:33 被阅读0次

    什么是字典
    字典(Dictionary)是Python中的内置数据结构
    字典非常适合表达结构化数据

    {
       '姓名':'汪峰','性别':'男'
        '绩效评级':'A','工资':'1000'
     }
    

    字典的特点
    采用键(KEY):值(VALUE)形式表达数据
    KEY不允许重复。
    可以运行时修改,动态调整存储空间。
    创建字典的两种方式
    使用{}创建字典

    dict1 = {} #空的字典
    print(type(dict1))
    dict2 = {'name':'汪峰' , 'sex':'男' , 'hiredate':'1997-10-20' ,
                  'grade':'A' , 'job':'销售' , 'salary':1000 ,
                  'welfare':100 
                    }
    

    使用dict函数创建字典
    dict3 = dict(name='汪峰',sex='男'。。。。。)
    dict4 = dict.fromkeys(['name' , 'sex' , 'hiredate' , 'grade'])
    print(dict4)
    {'name': None, 'sex':None ,'hiredate':None ,'grade':None}
    如果写成
    dict4 = dict.fromkeys(['name' , 'sex' , 'hiredate' , 'grade':'N/A'])
    print(dict4)
    默认值None会变成N/A

    字典的取值操作
    employee = {'name':'汪峰' , 'sex':'男' , 'hiredate':'1997-10-20' ,
    'grade':'A' , 'job':'销售' , 'salary':1000 ,
    'welfare':100
    }
    #字典的取值1
    name = employee['name']
    #字典的取值2
    name = employee.get('name')
    print(employee.get('dept' , '其他部门')) 如果没有字典中没有dept这个KEY,用get 可以使用设定的默认值‘其他部门’

     #in 成员运算符
        print('name' in employee)    #TRUE
        print('dept' in employee)     #FALSE
    # 遍历字典1
        for key in employee:
        v = employee[key]
        print(v)
     #遍历字典2
            for k,v in employee:
                print(k,v)
        //会打印出所有键值对
    

    字典的更新操作

    employee = {'name':'汪峰' , 'sex':'男' , 'hiredate':'1997-10-20' ,
                  'grade':'A' , 'job':'销售' , 'salary':1000 ,
                  'welfare':100 
                    }
    

    对单个KV进行更新

    employee['grade'] = 'B'
    

    对多个KV进行更新

    employee.update(salary = 1200,welfare = 150)
    

    字典的新增操作与更新操作完全相同,有则更新,无则新增的原则。

    employee['dept'] = '研发部'
    employee.update(dept='财务部')
    

    字典的删除操作

    #1,pop 删除指定kv
    employee.pop('dept')
    #2,popitem 删除最后一个kv
    kv = employee.popitem()
    #3,clear 清空字典
    employee.clear()
    

    字典的常用操作

    # 1,setdefault为字典设置默认值,如果某个KEY已经存在则忽略默认值,如果不存在则设置
    emp1 = {'name':'jack' , 'grade':''B}
    emp2 = {'name':'lily' }
    emp2.setdefault('grade' ,'C')  //比下面代码效率高
    # if 'grade' not in emp2
    #         emp2['grade'] = 'C'
    
    #2,获取字典的视图
        #(1)KEYS 代表获取所有的键
               ks = emp1.keys()   
                print(ks)   //返回一个视图   dict_keys(['name','grade'])
        #(2)    values 代表获取所有的值
                vs= emp1.values()
                print(vs)   //返回一个视图   dict_values
        # (3)items    代表获取所有的键值对
                its = emp1.items()
                print(its)   //返回一个视图   dict_items
      视图会随着emp1原始数据的变化而动态变化。
    
     # 3,利用字典格式化字符串
        #老版本的字符串格式化
            emp_str = "姓名:%(name)s,评级:%(grade)s,入职时间:%(hiredate)                s"  %emp1
         #新版本
            emp_str1 = "姓名:{name}, 评级:{grade}, 入职时间:{hiredate}".format_map(emp1)
    
    # 散列值(HASH)
        h1 = hash(“abc”)
        print(h1)
        hash散列值,接近唯一ID值
        特点1,被hash的值有一点变化,生成的hash值就完全不同。
                2,在同一次运行中,被hash的值相同,生成hash值就一定相同。
                3,每运行一次,hash值就会重新生成一次。
    
    #字典的存储原理
        把KEY进行哈希运算,生成一个的哈希值作为内存地址,在这个地址中存储VALUE
        效率高,建议结构化数据使用。
        比如,name,   hash(name) = 837181093 。 837181093这个内存中存储 “张三    
    
    #字典在项目中的应用
        #两个独立系统之间进行数据传输,比如人力资源系统和财务系统,通过格式化的字            符串导入解析。
        员工数据.TXT        7782,CLARK, MANAGER, SALES 5000$
                                    7934,    MILLER, SALESMAN, SALES, 3000$
                                    7369,    SMITH, ANALYST, RESEARCH, 2000
                                    每一组用$分割
        # 处理员工数据
            source = "7782,CLARK, MANAGER, SALES 5000$7934,    MILLER,                              SALESMAN, SALES, 3000$7369,    SMITH, ANALYST, RESEARCH, 2000"
            employee_list = source.split("$")
             print(employee_list)
           #保存所有解析后的员工信息,key是员工编号,value是包含完整员工信息的字典
                all_emp = {}
                for i in range(0,len(employee_list))    //range函数    range(start, stop[,                                                   step])    创建一个整数列表,一般用在 for 循环中。
                     e = employee_list[i].split(",")
                    #创建员工字典
                     employee = {"no" : e[0], "name" : e[1], "job":e[2], "department" : e[3], "salary" : e[4]}
                       all_emp[employee['no']] = employee
    
                 #生成的数据形式{'7782' : {'no':'7782','name':'clark','job':'manager','department':'sales','salary':5000}, '7934'.........}
           //这样可以通过get员工编号取得这个员工全部信息   
            empno = input("请输入员工编号:")
            emp = all_emp.get(empno)
            print("工号:{no},姓名:{name},岗位:{job},部门:{deparment},工资:{salary}".format_map(emp))

    相关文章

      网友评论

          本文标题:python基础5-字典

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