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)
  • 相关阅读:
    线程间的通信
    高速排序算法
    LightOJ 1205 Palindromic Numbers
    java异常处理
    Android Bundle类
    Linux守护进程的编程实现
    深入浅出JMS(一)——JMS简单介绍
    Maven安装与配置
    matlab学习------------普通dialog对话框,错误对话框errordlg,警告对话框warndlg
    读书笔记:计算机网络4章:网络层
  • 原文地址:https://www.cnblogs.com/systemsystem/p/9606067.html
Copyright © 2011-2022 走看看