• python 字典相关操作


    字典

    字典的增删改查

    字典的创建方式:

    复制代码
    # 创建字典类型
    info = {
        'name':'李白',
        'age':'25',
        'sex':'男'
    }
    
    
    msg = {
        'user01':'Longzeluola',
        'user02':'xiaozemaliya',
        'user03':'cangjingkong'
    }
    复制代码

    字典存储数据的时候,采取的是key:value的形式,是一组无序的存储。在需要的时候通过key就能够快速的获取value。

    复制代码
    msg = {
        'user01':'Longzeluola',
        'user02':'xiaozemaliya',
        'user03':'cangjingkong'
    }
    
    print(msg['user01'])  # Longzeluola
    复制代码

    字典的值可以根据key值获取并且进行更改。

    复制代码
    msg = {
        'user01':'Longzeluola',
        'user02':'xiaozemaliya',
        'user03':'cangjingkong'
    }
    
    msg['user03'] = '泷泽萝拉'
    复制代码

    结果:

    {'user01': 'Longzeluola', 'user02': 'xiaozemaliya', 'user03': '泷泽萝拉'}
    

    那么字典中如果需要新添加数据的话,也可以通过设置key-value的形式来进行添加。

    复制代码
    msg = {
        'user01':'Longzeluola',
        'user02':'xiaozemaliya',
        'user03':'cangjingkong'
    }
    
    msg['user04'] = 'MaLiCang'
    print(msg)
    复制代码

    结果:

    {'user01': 'Longzeluola', 'user02': 'xiaozemaliya', 'user03': 'cangjingkong', 'user04': 'MaLiCang'}
    

    而如果需要删除python中的数据,可以使用如下的三种方法:

    复制代码
    msg = {
        'user01':'Longzeluola',
        'user02':'xiaozemaliya',
        'user03':'cangjingkong'
    }
    
    # 删除字典方法一
    #del msg['user01']  # {'user02': 'xiaozemaliya', 'user03': 'cangjingkong'}
    
    # 删除字典方法二
    #msg.pop('user01')  # # {'user02': 'xiaozemaliya', 'user03': 'cangjingkong'}
    
    # 删除字典方法三
    msg.popitem() # {'user01': 'Longzeluola', 'user02': 'xiaozemaliya'}
    复制代码

    补充

    在上面的一些操作中,我们基本实现了字典的增删改查,但是在查的过程中,有一点是需要注意的,如上面的查询方式dir[key]这种,如果key值并不存在于字典中,就会出现一个keyerror的错误,所以为了避免错误,我们通常情况下都不会使用这种方式来进行字典的key值查找,而是通过下面的方法。

    复制代码
    # 创建一个字典
    
    msg = {
        'user1101':'Xiaozemaliya',
        'user1102':'Wutentlan',
        'user1103':'Cangjingkong'
    }
    
    # 通过key值获取value 使用get方式,存在key,那么就返回对应的value,如果不存在key,那么就返回None
    print(msg.get('user1101')) # Xiaozemaliya
    print(msg.get('user1108')) # None 
    复制代码

    判断一个key是否存在于一个字典中,可以使用in 运算符。

    复制代码
    # 创建一个字典
    
    msg = {
        'user1101':'Xiaozemaliya',
        'user1102':'Wutentlan',
        'user1103':'Cangjingkong'
    }
    
    # 使用in检测字典中是否存在指定的key
    print('user1101' in msg) # True
    print('user1109' in msg) # False
    复制代码

    上面是使用in运算符判断key是否存在,需要注意的是,在python2.x 的版本中,判断一个key是否存在于字典中,可以使用msg.has_key()的方式来进行判断。

    多级字典嵌套及操作

    在字典中,一直以key-value的形式进行数据存储,但是value的值除了是字符串以外,还可以是其他类型的值。同时,在字典中,也可以继续嵌套字典等数据。具体操作如下:

    复制代码
    # 创建一个多级的字典
    av_catalog = {
        "欧美":{
            "www.youporn.com": ["很多免费的,世界最大的","质量一般"],
            "www.pornhub.com": ["很多免费的,也很大","质量比yourporn高点"],
            "letmedothistoyou.com": ["多是自拍,高质量图片很多","资源不多,更新慢"],
            "x-art.com":["质量很高,真的很高","全部收费,屌比请绕过"]
        },
        "日韩":{
            "tokyo-hot":["质量怎样不清楚,个人已经不喜欢日韩范了","听说是收费的"]
        },
        "大陆":{
            "1024":["全部免费,真好,好人一生平安","服务器在国外,慢"]
        }
    }
    
    # 更改key值
    av_catalog['大陆']['1024'][1] = '可以在国内做一个镜像'
    
    print(av_catalog)
    复制代码

    关于字典的补充说明

    values 打印字典里面的所有的值

    复制代码
    msg = {
        'stu1101':'XiaomingStudent',
        'stu1102':'XiaohongStudent',
        'stu2201':'XiaolvStudent',
        'stu3101':'XiaoZhangStudent'
    }
    # values() 方法 输出字典中所有的值
    print(msg.values())
    复制代码

    结果为:

    dict_values(['XiaomingStudent', 'XiaohongStudent', 'XiaolvStudent', 'XiaoZhangStudent'])
    

    keys 打印所有的key

    复制代码
    msg = {
        'stu1101':'XiaomingStudent',
        'stu1102':'XiaohongStudent',
        'stu2201':'XiaolvStudent',
        'stu3101':'XiaoZhangStudent'
    }
    
    # keys 打印所有的key
    print(msg.keys())
    复制代码

    结果为:

    dict_keys(['stu1101', 'stu1102', 'stu2201', 'stu3101'])
    

    setdefault

    设置新的key:value ,如果设置的key在字典中存在,那么就会把之前的key以及value返回,新设置的就会失效,如果没有就把设置的key:value添加到字典中去。

    复制代码
    msg = {
        'stu1101':'XiaomingStudent',
        'stu1102':'XiaohongStudent',
        'stu2201':'XiaolvStudent',
        'stu3101':'XiaoZhangStudent'
    }
    
    # 使用setdefault方法设置key:value
    msg.setdefault('stu3101','YanYanStudent') # 此时3101key 已经存在,并不会新增的内容所影响
    print(msg)
    msg.setdefault('stu3102','LuLuStudent') # 此时新增加的key 3102 添加成功
    print(msg)
    复制代码

    update 更新合并

    使用update方法,可以将两个字典合并,并且如果字典中存在重复的内容,会产生覆盖,如果内容不重复,就会被合并到一个字典中。

    复制代码
    msg = {
        'stu1101':'XiaomingStudent',
        'stu1102':'XiaohongStudent',
        'stu2201':'XiaolvStudent',
        'stu3101':'XiaoZhangStudent'
    }
    
    test_info = {
        'T1101':'YanYanTeacher',
        'T1102':'LiBai',
        'stu2201':'JingjingStudent'
    }
    
    msg.update(test_info)
    
    print(msg)
    复制代码

    输出结果为:

    {'stu1101': 'XiaomingStudent', 'stu1102': 'XiaohongStudent', 'stu2201': 'JingjingStudent', 'stu3101': 'XiaoZhangStudent', 'T1101': 'YanYanTeacher', 'T1102': 'LiBai'}
    

    items 把一个列表转为一个元组

    复制代码
    msg = {
        'stu1101':'XiaomingStudent',
        'stu1102':'XiaohongStudent',
        'stu2201':'XiaolvStudent',
        'stu3101':'XiaoZhangStudent'
    }
    
    print(msg.items())
    复制代码

    输出结果为:

    dict_items([('stu1101', 'XiaomingStudent'), ('stu1102', 'XiaohongStudent'), ('stu2201', 'XiaolvStudent'), ('stu3101', 'XiaoZhangStudent')])
    

    fromkeys 创建一个初始化列表

    test_dir = dict.fromkeys(['stu01','stu02','stu03'],[1,{'name':'YanYanStudent'}])
    
    print(test_dir) 

    输出的结果为:

    {'stu01': [1, {'name': 'YanYanStudent'}], 'stu02': [1, {'name': 'YanYanStudent'}], 'stu03': [1, {'name': 'YanYanStudent'}]}
    

    此时通过dict.fromkeys方法,就创建出了一个新的字典,但是在这个字典中存在一个容易错的地方,如下:

    复制代码
    test_dir = dict.fromkeys(['stu01','stu02','stu03'],[1,{'name':'YanYanStudent'}])
    
    # 尝试着更改这个字典中的内容通过key值
    test_dir['stu01'][1]['name'] = 'YanYanTeacher'
    
    print(test_dir)
    复制代码

    我们在代码中更改了其中的一个key的值,结果输出却为:

    {'stu01': [1, {'name': 'YanYanTeacher'}], 'stu02': [1, {'name': 'YanYanTeacher'}], 'stu03': [1, {'name': 'YanYanTeacher'}]}
    

    此时我们发现所有的key对应的value都被改变了。而这也是我们在使用这个fromkeys方法的时候需要注意的点。

    字典的循环输出

    将字典中key和value循环输出,有以下的两种方式:

    复制代码
    # 创建一个字典
    msg = {
        'T1101':'YanYanTeacher',
        'T1201':'LuLuTeacher',
        'T1301':'JingJingTeacher'
    }
    
    # 循环输出字典 -- 第一种方法
    for i in msg:
        print(i,msg[i])
    
    # 循环输出字典 -- 第二种方法
    for i,v in msg.items():
        print(i,v)
    复制代码

    上面两种循环输出列表的方式输出的结果是一样的,但是较为推荐使用第一种,因为第一种方式的执行效率要高于第二种,因为第一种是直接根据key值取出value,而第二种方式则是要多出一步将字典转换为列表的步骤,所以效率相对来讲比较低。

  • 相关阅读:
    华为云垃圾分类大赛,让AI 帮你“见圾行事”
    【带着canvas去流浪(14)】Three.js中凹浮雕模型的生成方式
    Ubuntu 配置网卡信息
    配置 Mysql 支持远程访问 并取消域名解析以提高链接速度
    jQuery 操作 html5 data-* 属性
    Laravel 中使用原生的 PHPExcel
    Laravel 上使用 phpexcel的两种方式
    debian中默认不存在sudo命令解决方法
    composer install 时,提示:Package yiisoft/yii2-codeception is abandoned, you should avoid using it. Use codeception/codeception instead.的解决
    Linux 磁盘分区存放文件和目录的数量 (inode)
  • 原文地址:https://www.cnblogs.com/yujihaia/p/7468261.html
Copyright © 2020-2023  润新知