• Day2:字典


    一、定义

      字典是一种“key-value”成对出现的数据类型,中间用冒号把key与value隔,不同的数据用逗号隔开,全部数据用大括号括起来

    info = {
        'stu1101': "TengLan Wu",
        'stu1102': "LongZe Luola",
        'stu1103': "XiaoZe Maliya",
    }
    

      注:key值尽量不要写中文,可能会出现不兼容

    二、特性

      1.无序性

      2.key值唯一性(无重复)

    三、方法

      1.取值(查找、获取)  

    print(info['stu1103'])
    

      通达key值来取。此方法如果字典里没有该键值,会报错(KeyError)。

    print(info.get('stu1104'))
    

      此方法是安全地取值方法。如遇到没有该键值的情况下,输出None,不报错。  

      2.修改

      

    #!/usr/bin/env python
    # -*- coding:utf-8 -*-
    # Author:Hiuhung Wan
    info = {
        'stu1101': "TengLan Wu",
        'stu1102': "LongZe Luola",
        'stu1103': "XiaoZe Maliya",
    }
    print(info)
    #print(info['stu1103'])
    info['stu1103'] = "小泽玛丽亚"
    info['stu1104'] = "Cangjingkong"
    print(info)
    

      可以直接通过赋值的方式来修改,如果没有这个key值,就直接增加

      3.删除

    del info['stu1101']
    info.pop('stu1102')
    info.popitem()    #随机删除一个,少用
    

      

      4.判断某个key是否在字典里

    print('stu1104' in info)
    

      返回Ture或False

      注:在python 2.x中的用法是: info.has_key('stu1104'),效果一样

      5.多级字典嵌套的操作

      可以层层嵌套 

    #!/usr/bin/env python
    # -*- coding:utf-8 -*-
    # Author:Hiuhung Wan
    av_catalog = {
        "欧美":{
            "www.youporn.com": ["很多免费的,世界最大的","质量一般"],
            "www.pornhub.com": ["很多免费的,也很大","质量比yourporn高点"],
            "letmedothistoyou.com": ["多是自拍,高质量图片很多","资源不多,更新慢"],
            "x-art.com":["质量很高,真的很高","全部收费,屌比请绕过"]
        },
        "日韩":{
            "tokyo-hot":["质量怎样不清楚,个人已经不喜欢日韩范了","听说是收费的"]
        },
        "大陆":{
            "1024":["全部免费,真好,好人一生平安","服务器在国外,慢"]
        }
    }
    av_catalog['大陆']["1024"][1] = "可以在国内做镜像"
    print(av_catalog)
    

      

      6.其他方法

        6.1   setdefault

    av_catalog.setdefault('大陆',{'www.qq.com':[1,2]})  #先到字典找“大陆”,如果有就返回,没有,就创建
    

        

        6.2   update

    #!/usr/bin/env python
    # -*- coding:utf-8 -*-
    # Author:Hiuhung Wan
    info = {
        'stu1101': "TengLan Wu",
        'stu1102': "LongZe Luola",
        'stu1103': "XiaoZe Maliya",
    }
    
    dic_a = {
        'stu1101': 'Wenxh',
        1:10,
        2:5,
    }
    
    info.update(dic_a)  #两个字典合并,key值一样的就会被更新,没有的就加进去
    print(info)
    
    

      

        6.3   items

      把字典转成列表,每条数据是元组。  

    #!/usr/bin/env python
    # -*- coding:utf-8 -*-
    # Author:Hiuhung Wan
    info = {
        'stu1101': "TengLan Wu",
        'stu1102': "LongZe Luola",
        'stu1103': "XiaoZe Maliya",
    }
    
    dic_a = {
        'stu1101': 'Wenxh',
        1:10,
        2:5,
    }
    
    info.update(dic_a)  
    print(info)
    print(info.items())
    

      

    dict_items([('stu1101', 'Wenxh'), ('stu1102', 'LongZe Luola'), ('stu1103', 'XiaoZe Maliya'), (1, 10), (2, 5)])
    

      

        6.4   fromkeys

      初始化一个新字典

    dict_b = dict.fromkeys([5,6,7,8])
    dict_c = dict.fromkeys([5,6,7,8],'test')
    print(dict_b)  #{5: None, 6: None, 7: None, 8: None}
    print(dict_c)  #{5: 'test', 6: 'test', 7: 'test', 8: 'test'}
    

      一般用这个方法来创建只有一层的字典,多层的字典不要用此方法!

    四、循环打印

      

    for i in dict_c:
        print(i,dict_c[i])
    

      或者:

    for i,j in dict_c.items():
        print(i,j)
    

      数据量大时强烈建议用第一个方法!!

  • 相关阅读:
    以用户、组织结构和权限为例,论如何将基于关系型数据库的设计简化
    spring InitializingBean接口
    DelegatingFilterProxy
    组织机构权限系统的实现(工作流)
    activiti 引擎 数据库设计说明书
    modeler与activiti进行整合
    流程引擎的API和服务基础
    广东程序员在加利福尼亚
    开源 -- 机器学习相关报道
    国内一些大公司的开源项目
  • 原文地址:https://www.cnblogs.com/hiuhungwan/p/7706989.html
Copyright © 2020-2023  润新知