zoukankan      html  css  js  c++  java
  • python.day05

    一 字典 

    定义:dict, 以{},表示.每一项用逗号隔开,内部元素用key:value的形式来保存数据.例如

    {"jj":"林俊杰","jay':周杰伦"}

    特点:查询效率非常高,通过key来查找元素

    内部使用key来计算一个内存地址(暂时),hash算法,key必须不可变的数据类型(key必须是可hash的数据类型)可hash就是不可变

    已知的可hash数据:int str tuple bool

    不可hash的类型:list dist set

    语法 dict={key1:value1,key2;value2....}

    注意;key必须是不可hash的(不可变的),value没有要求(可以保存任意的数据)

           dict保存的数据不是按照我们添加进去的顺序保存的. 是按照hash表的顺序保存的. ⽽而hash表
           不是连续的. 所以不能进⾏行行切片⼯工作. 它只能通过key来获取dict中的数据

    二 新增

    dic={}
    dic["徐峥"]="人在囧途" #如果dict中没没有key,就会新增一个key:value的组合进去
    dic["黄渤"]="疯狂的石头"
    dic["王宝强"]="天下无贼"
    dic["王宝强"]="士兵突击" #如果key已经存在.那么会替换掉原来的value
    dic.setdefault("黄丘生")
    dic.setdefault("黄丘生","无间道")# 如果key存在了 不会执行新增
    print(dic)

    三 删除

    dic = {"黄日华": "天龙八部", "吕颂贤": "笑傲江湖", "苏有朋": "倚天屠记"}
    # #dic.pop("吕颂贤") #指定删除
    # dic.popitem()#随即删除
    # dic.clear() # 清空字典
    # print(dic)

    四 修改

    dic = {"刘能": "王小利", "赵四": "刘晓光", "王木生": "范伟", "谢大脚": "于月仙", "李大国": "小鬼"}
    dic['王木生'] = "刘伟"
    # print(dic) 替换
    dic2 = {"刘能": "大阳哥", "赵四": "github", "王木生": "汪峰", "谢大脚": "冯提莫", "王大拿": "金老板"}
    dic.update(dic2) #相同的换掉,不一样的加上去
    print(dic)

    五 查询

     dic={"刘能":"大阳哥","赵四":"github","王木生":"汪峰"}
    # #1.最直观,直接用key
    # print(dic["刘能"])#当这个key不存在时会报错
    # # # 2.get
    # print(dic.get("谢大脚",))##没有key返回none
    # # #3.
    # #setdefault(先新增 看看有没有key,如果有就过,没有执行新增 @根据key把值返回
    dic={}
    dic["盖伦"]="德玛西亚之力"
    value = dic.setdefault("feiaona", "无双剑姬")  # 新增
    value2 = dic.setdefault("盖伦", "刘伟")  # 由于已经存在了key。 所以新增不执行。 直接查询结果
    value3 = dic.setdefault("薇恩", "")
    print(dic)

    相关操作

    主要是遍历字典

    =相关操作
    dic = {"汪峰": "大陆音乐半壁江山", "周杰伦": "亚洲音乐天王", "罗志祥": "亚洲舞王"}
    #print(dic.values()) #得到 dict_keys(['汪峰', '周杰伦', '罗志祥']) 像列表但不是列表 可以当列表来看(来用)
    
    #通过这种方法对字典的遍历一个个都拿出来
    #第一种方法:
    # for key in dic.keys():
    #     print(key) # 得到 key
    #     print(dic[key]) #得到value     daic[key]表示value
    
    #上边是对key的遍历
    #对value的遍历
    
    # print(dic.values())
    # for value in dic.values():
    #    print(value)# 只能拿出value不能拿出key 也就这样了
    
    #既然拿到key,拿到value
    #能不能一对一对拿
    
    #亦可以遍历字典
    # print(dic.items())  #items每一项 ; 拿到value和拿出key
    # for item in dic.items():
    #     print(item) #拿到元组类型的
    #     print(item[0],item[1]) #拿到key和value
    #
    # a,b=10,20 #结构解包 元组列表都有
    # print(a)
    # print(b)
    
    #这个也可以遍历字典
    #
    # print(dic.items())  # 拿到的是key和value
    for k, v in dic.items(): # 当需要遍历字典. 在操作中涉及到key和value的时候.
        print(k) # 元组
        print(v)
    
    
    # 字典本身是一个可迭代对象,可以直接进行for循环
    for el in dic:  # 直接拿到key
        print(el)
        print(dic[el])

    六 字典的嵌套

    给个例子

    wf = {
        "name": "汪峰",
        "age": 48,
        "成名曲": "春天里",
        "wife": {
            "name": "章子怡",
            "age": 39,
            "工作": "演员"
        },
        "children":[
            {"num": "001", "name": "汪一", "hobby": "唱歌"},
            {"num": "002", "name": "汪二", "hobby": "演戏"} # wf['children'][1]['name']
        ]
    }
    
    # wf['wife']['age'] = wf['wife']['age'] + 10
    # print(wf)
  • 相关阅读:
    HTTP断点续传 规格严格
    Java Shutdown 规格严格
    linux 命令源码 规格严格
    JTable调整列宽 规格严格
    linux 多CPU 规格严格
    Hello can not find git path 规格严格
    Kill 规格严格
    拜拜牛人 规格严格
    Swing 规格严格
    Debugging hangs in JVM (on AIX but methodology applicable to other platforms) 规格严格
  • 原文地址:https://www.cnblogs.com/systemsystem/p/9606067.html
Copyright © 2011-2022 走看看