• Python之字典


    1、字典的特点:

    • 速度快,好取值
    • 无序存储,因此每次输出的顺序都有可能不一样
    • 可以循环
    • key是不会有重复
    • 以k-v形式存在,即:
     stus={
       'name':'xiaojun',
       'sex':'',
       'heigt':'185',
       'age':18,
       'email':'abc@qq.com',
       'addr':'火星',
       'id':1
     }

     2、增删改查实现:

    #查:

    • 查询所有字典内容:
    print(stus)
    • 查询所有的value值:

    使用.values()方法:

    print(stus.values())
    •  查询所有的key:

    使用.keys()方法:

    print(stus.keys())
    • 查询单个值:

    使用key作为变量进行查询,可以查出value值:

    print(stus['name'])

    如果没有key,那么以上这种方式会报错,这时换成另一种查询方式:

    print(stus.get('xingming'))

    使用.get()方法,如果程序中有key,则返回value值;如果没有Key,则返回:None。

    (Python中的key和value都是成对出现的。)

    当没有key的时候,可以设置一个默认的value值:

    print(stus.get('xingming','lrx'))

    那么当使用.get()时就会返回这个默认value,即lrx。

    .get()方法:

    • 查找不报错
    • 可以设置默认值

    #增:

    •  直接赋值,如果没有值,直接加入(有同样key会修改);
    stus['name']='小军'
    • 使用.setdefault()方法:
    stus.setdefault('addr','北京')

    .setdefault()方法:

    • 如果原来有值,则使用setdefault()后不会覆盖原值。
    • 适用于不清楚原来有哪些key-value,又想赋值或者查询的情况:
    stus['name']='小军'
    stus['name']='海龙'
    stus.setdefault('name','杨帆') 
    print(stus['name'])
    #结果为海龙

     #改:

    如果有值,就覆盖原值:

    stus['name']='admin'

    #删:

    • 删除具体值:

    使用.pop()方法,以key为变量:

    stus.pop('name')
    • 删除具体值:

    使用del方式,以key为变量:

    del stus['name']
    • 随机删除某一个值:

    使用.popitem()方法:

    stus.popitem()

    3、清空字典:

    使用.clear()方法:

    stus.clear()

    4、字典合并更新:

    使用.update()方法,相当于追加,把一个字典里的内容加到另一个字典里:

    abc={'住址':'北京'}
    stus.update(abc)

    5、字典循环:

    使用for循环,

    (字典都是一维的)

    • 只打印key:
    for i in stus:
        if i == 'name':
            print(stus[i])
    # 输出value
    print((i, '========>', stus.get(i)))
    • 同时打印key和value:

    使用.items()方法:

    for k,v in stus.items():
        print(k,'=========>',v)

      6、多层嵌套字典应用:

    all_stus={
        'xiaojun':
        {
        'name': 'xiaojun',
        'sex': '',
        'shengao': '185',
        'age': 18,
        'email': 'abc@qq.com',
        'addr': '火星',
        'id': 1,
        'cars':['牧马人','911','野马','劳斯莱斯']
        },
        'yangfan':
            {
                'name': 'hailong',
                'sex': '',
                'shengao': '185',
                'age': 18,
                'email': 'abc@qq.com',
                'addr': '火星',
                'id': 3,
                'bags':{
                    'qianbao':['lv','ysl'],
                    'beibao':['coach','abc']
                }
            }
    }
    • 找到value所在位置后,进行列表追加:
    all_stus['xiaojun']['cars'].append('五菱宏光')

    (找value类似于列表,将所有的key作为下标使用。)

    • 打印值的长度:

    使用len()方法:

    print(len(all_stus['xiaojun']['cars']))
    • 改值:
    all_stus['yangfan']['sex']=''
    • 删值:

    使用.pop()方法:

    all_stus['yangfan']['bags']['qianbao'].pop(0)#删除lv

    使用.remove()方法:

    all_stus['yangfan']['bags']['qianbao'].remove('ysl')#删除ysl

    (remove()是列表list的方法,并不是字典里的方法。)

     使用del()方式:

    del all_stus['yangfan']['bags']['qianbao'][0]#del在字典中括号里是key,在列表中括号里是下标

    扩展:

    • 多层嵌套取值时,可以使用jsonpath模块,支持模糊查询: 

    d= {
            "error_code": 0,
            "stu_info": [
                    {
                            "id": 30,
                            "name": "小黑",
                            "sex": "",
                            "age": 20,
                            "addr": "北北yiu北京jj北京昌gu北京昌平",
                            "grade": "处女座",
                            "phone": "18801530191",
                            "gold": 2147483647
                    },
                    {
                            "id": 66,
                            "name": "小黑",
                            "sex": "",
                            "age": 28,
                            "addr": "河南省济源市北海大道32号",
                            "grade": "天蝎座",
                            "phone": "18612532941",
                            "gold": 2147483647
                    }]
    }
    print('一般查询方式的结果:',d.get('stu_info')[0].get('name'))
    import jsonpath
    # result = jsonpath.jsonpath(d,'$.stu_info[0].name')
    result = jsonpath.jsonpath(d,'$..name')
    print('模糊查询结果:',result)
    
    结果:
    一般查询方式的结果: 小黑
    模糊查询结果: ['小黑', '小黑']  

    *  方法都是接( );只有取值时用的是[ ] 


     任何付出都是值得的,会越来越好

  • 相关阅读:
    贪心法之活动安排问题
    动态规划算法之最优二叉搜索树
    动态规划之最大字段和问题
    动态规划算法之图像压缩问题
    动态规划算法之0-1背包问题
    动态规划算法之投资问题
    平面点集的凸包问题
    动态规划(DP)之多边形游戏问题
    凸多边形最优三角划分
    最长公共子序列问题
  • 原文地址:https://www.cnblogs.com/brf-test/p/12358739.html
Copyright © 2020-2023  润新知