zoukankan      html  css  js  c++  java
  • Python之字典

    1、字典的特点:

    • 速度快,好取值
    • 无序存储,因此每次输出的顺序都有可能不一样
    • 可以循环
    • 以k-v形式存在,即:
     stus={
       'name':'xiaojun',
       'sex':'男',
       'shengao':'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()方法:

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

    #增:

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

    .setdefault()方法:

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

     #改:

    如果有值,就覆盖原值:

    stus['zhanghao']='admin'

    #删:

    • 删除具体值:

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

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

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

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

    使用.popitem()方法:

    stus.popitem()

    3、清空字典:

    使用.clear()方法:

    stus.clear()

    4、字典合并更新:

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

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

    5、字典循环:

    使用for循环,

    (字典都是一维的)

    • 只打印key:
    for i in stus:
        if i=='zhanghao':
            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,在列表中括号里是下标

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

  • 相关阅读:
    【C++】资源管理
    【Shell脚本】逐行处理文本文件
    【算法题】rand5()产生rand7()
    【Shell脚本】字符串处理
    Apple iOS产品硬件参数. 不及格的程序员
    与iPhone的差距! 不及格的程序员
    iPhone游戏 Mr.Karoshi"过劳死"通关. 不及格的程序员
    XCode V4 发布了, 苹果的却是个变态. 不及格的程序员
    何时readonly 字段不是 readonly 的?结果出呼你想象!!! 不及格的程序员
    object file format unrecognized, invalid, or unsuitable Command 不及格的程序员
  • 原文地址:https://www.cnblogs.com/yanwuliu/p/9562454.html
Copyright © 2011-2022 走看看