zoukankan      html  css  js  c++  java
  • 关于字典的那些事儿.


    程序是你试错-调整出来的, 不是你一下子就能完美写出来的.
    你要面对很多类似的困难, 让你难受一阵子你才能有长进.生活也如此.                                             -----涛哥.

    字典

    1.1 字典的创建:(3种方式)

    (1)  直接创建
    
      dic = {'name': 'alex'}        
    
    (2) 函数默认值形式创建 dic = dict(内容)   
    
      如  dic = dict(name= 'alex',age = 16)    # 函数的默认值的创建, 前面的变量name 和age 不带引号
    
        Print(dic)              
    
            又如: dic1 = dict({'name':"alex", "age":12 })                     # 这种函数式的创建,就相当于直接写出来了.(有点多此一举的)
    
          print(dict1) 
    (
    3) 批量创建 fromkeys()*** # dict.fromkeys**拆键均分, 值相同   dic = dict.fromkeys('abc', '嘎嘎')     print(dic)      # {'a':'嘎嘎','b':'嘎嘎','c':'嘎嘎'}

    增删改查(3 4 2 3)

    why字典:?
      
    1.列表如果存储了大量的数据,查询速度相对性较慢.
    2.列表孙处数据一般没有什么关联性.
    [小光,175,男....]
    针对以上的因素, python提供了一个基础数据类型: dict字典.
    数据类型的分类:
        容器型的数据类型: list, tuple, dict, set.
        非容器型的数据类型:str, bool, int
        
        可变(不可哈希)的数据类型:list, dict, set
        不可变(可哈希)的数据类型: str,int, bool, tuple,
        
    
    what 字典?
           ---"以键值对存储的数据类型".
        1.字典的键必须是不可变(可hash)的数据类型, 唯一的不重复.
            字典的值可以是任意的数据类型(包括对象).
        2. 字典的查询速度非常之快.
        3.字典在3.6之前是无需的, 但是在3.6优化机制下显示是有序的.
    
    how:
        增删改查
        其他操作
    where:
            当你想构建大量的数据类型的时候, 用dict
    
    04 字典的嵌套
    05 集合(了解)


    增:(3种)
    1. #有则覆盖, 没有就新增 dic[""] =# dic['weight'] = 150 2. setdefault # 有就不覆盖, 没有就新增, setdefault不会拆键,只是增加键和值,这个要牢记. dic.setdefault('',v)
    # dic.setdefault('high')
    # dic.setdefault('high',175)
    # dic.setdefault('name', '日天')
    # print(dic)

    3. update #update(键 = "值")
    dic.update(键 = "值")      # 注意: 键-不带引号~    这其实是函数里面默认值的一个创建
    dic.update(weight = '50kg',height = 175)  
    print(dic)
    # 删 (4种))
    
    1. del
    # del dic
    # print(dic)
    # del dic['name']
    # # print(dic)
    
    2. pop 通过键去删除键值对
    # ret = dic.pop('name')
    # print(ret)  # 有返回值 返回对应的值
    # ret1 = dic.pop('name1', '没有此键')  # 没有此键 就不报错并且设置返回值
    # print(ret1)
    # print(dic)
    
    3.  popitem  删除最后一个键值对
    # 3.5之前是随机删除,3.6删除最后一个键值对
    # ret= dic.popitem()
    # print(ret)
    # print(dic)
    
    4. clear 清空
    # dic.clear()
    # print(dic)
    改: (2种)
    
    1. dic[''] = 新的值
    dic ['age'] = 28
    print(dic)
       
    2.update
    (1) update两个字典的覆盖添加
    dic1 = {'name':"",'age': 18, "sex":"male"}
    dic2 = {'name':'alex', weight':"75kg"}
    dic1.update(dic2)  # 将dic2中的键值对覆盖添加到dic1中, dic2不变.
    print(dic1)
    print(dic2)
    # (2)update            dic.update(键=值,)      #其实算增加
        dic.update('weight' = 50,height = 175)
        print(dic)
    查 (3种))
    1. print(dic[键])     #按照键查询对应的值 ,没有的话会报错
        print(dic['name']}
    
    2. get
    没有的话不报错默认返回None, 可以自己设置默认值 ret = dic.get('age') ret = dic.get('age1') ret = dic.get('age1','没有此键') print(ret) 3.for 循环字典*,
    ***打印出的是字典的key值.
    for i in dic: print(i) 4.for xxx in dic.keys(), dic.values(), dic.items() # print(dic.keys()) # 上面三个都是返回一个类似于列表的数据类型.
    **
    for key in dic.keys(): print(key) for value in dic.values(): print(value)
    ***
    for k,v in dic.items(): # 这里面有一个拆分 print(k,v)

     字典的其他操作 --          批量创建字典 .fromkeys

    fromkeys      -----     是一种批量创建不同键相同值字典的方法 
    
    结构: dict.fromkeys("可迭代对象",值)        是一种批量创建不同键相同值字典的方法 
    
    dic = {'name':'ale'}
    dic = dict.fromkeys('abc', '春哥')      # 主体是dict.fromkeys()
    print(dic)
    dic = dict.fromkeys([1,2,3],'春哥')    #键是可迭代对象的每一个元素, 值就是值
    print(dic)
    
    # 坑:   值如果是可变的数据类型, 那么所有的值都在同一个内存地址当中. 多以改变其中的一个值时, 所有的值都跟着改变.
    dic = dict.fromkeys("abc",["alex"])    
    dic['c'].append('666')
    print(dict)        # {'a': ['alex', '666'], 'b': ['alex', '666'], 'c': ['alex', '666']}
    格式化输出%s与字典相结合
    当格式化输出%s与字典相结合
    
    ''%(键)s''   %字典                         # 当%s与字典相结合 形成的格式化输出
    dic = {'name':'白勇太', 'gender' : '', 'age' : 18}
    msg = "我叫%(name)s, 今年%(age)s, 性别%(gender)s." % dic       # %()里不带引号
    print(msg)
    
    # 我叫白勇太, 今年18, 性别男.
        

    字典的嵌套:

    字典的嵌套练习:
    
    dic = {
        'l1': ['alex', '太白'],
        'id': 3,
        1: {
            'data': 20181225,
            'place': '深圳校区',
            'class': 'python3期',
            'name_list': ['小潘', 'jay', '春哥', 'xx'],
        }
    
    1. 给小列表['alex','太白']alex后面插入一个字符串, "aaa"
    # dic['l1'] = dic['l1'].insert(1,"aaa") # 都行好像
    dic['l1'].insert(1,"aaa")  
    
    2. 将id对应的3变成1.
    dic['id'] = 1
    print(dic)
    
    3. 将1对应的字典的data变成20181224,
    dic[1][data] = 201801225
    
    4. 将name_list对应的jay全部变成大写。
    dic[1]['name_list'][1] = dic[1]['name_list'][1].upper()
    print(dic)
    
    5. 将name_list对应的xx删除。
    dic[1]['name_list'].pop(-1) 
    或 dic[1]['name_list'].remove('xx')
    亦或  del dic[1]['name_list'][-1]    # 即  del,pop,remove三删除方式
  • 相关阅读:
    Mybatis插件开发入门,运行原理,例子
    ActiveMQ是什么,为什么使用MQ
    sql优化
    用户注册流程
    JMS入门Demo
    运维自动化之Ansible
    ceph安装部署
    ceph工作原理
    linux进程
    任务计划
  • 原文地址:https://www.cnblogs.com/jack20181017/p/10175588.html
Copyright © 2011-2022 走看看