• python学习 day05打卡


    今天可变学习的主要内容是 :

     本节主要内容:

    1.字典的简单介绍

    2.字典增删改查和其他操作

    3.字典的嵌套

    一.字典的简单介绍

    字典(dict)是pytho中唯一的一个映射类型.它是以{}括起来的键值对组成的.在dict中key是唯一的.在保存的时候,根据key来计算出一个内存地址.然后将key-value保存在这个地址中.

    这种算法被称为hash算法,所以,切记,在dict中储存的key-value中的key必须是可hash的.

    如果你搞不懂什么是hash,暂时可以这样记,可以改变的都是不可哈希的.那么可哈希的意味着不可变.这个是为了能准确的计算内存地址二规定的.

    已知的可哈希(不可变)的数据类型:int,str,tuple,bool

    不可哈希(可变)的数据类型:list,dict,set

    dict的语法:

    {key1:value1,key2:value2....}

    注意: key必须是不可变(可哈希)的.value没有要求.可以保存任意类型的数据

    dict保存的数据不是按照我们添加进去的顺序保存的,是按照hash表的顺序暴君的.而hash表示不可连续的.所以不能进行切片操作,他只能通过key来获取dict中的数据

    二.字典的增删改查和其他相关操作

    1.增加

    dic ={}

    dic["name"] = "周润发"

    # 如果dict中没有出现这个可以,就会新增一个key-value的组合进dict

    print(dic)

    #如果dict组合没有出现过这个key-value.可以通过setdefault设置默认值

    dic.setdefault('李嘉诚') #也可以往里面设置值.

    dic.setdefault('李嘉诚','房地产')   #如果dict中已经存在了.那么setdefault将不会起作用

    print(dic)

    2.删除

    dict.pop(key):删除指定的键值对()有返回值

    dict.popitem():随机删除

    dict.clear():清空字典中的所有内容

    del dict[key]:删除指定内容(没有返回值)

    3.修改

    dic{key:value}

    dic[key] = value1

    dic.update(dic1)

    #把dic1的内容更新到dic中.如果key重名.则修改替换,如果不存在key,则新增

    4.查询

    查询一般用key来查找具体的数据.

    dic[key]  如果当可以不存在,会报错  KeyError

    dic.get(key)当key不存在的时候不会报错.默认返回值None

    dic,get(key,"没有")  两个参数,若第一个参数不存在.返回第二个参数作为默认值,如果存在直接返回value

    setdefault()的判断流程:

    1.先检测是否存在key,如果存在,就修改相对应的值,如果不存在就新增键值对

    2.根据你给的key把value查询出来

    例如:

     dic = {"jay":"周杰伦"}
     ret = dic.setdefault("jay_jj","林俊杰")
     print(dic, ret) 
    lst = [11,22,33,44,55,66,77,88,99]
    dic = {"key1":[], "key2": []}
    for el in lst:
    if el > 66:
             dic['key1'].append(el)
         else:
             dic["key2"].append(el)
     print(dic)
     lst = [11,22,33,44,55,66,77,88,99]
     dic = {}
     for el in lst:
         if el > 66:
             dic.setdefault("key1", []).append(el)
         else:
             dic.setdefault("key2", []).append(el)
     print(dic)

    5.其他相关操作

    dic = {"意大利":"西西里的美丽传说", "意大利2":"天堂电影院", "美国":'美国往事', "美国电视剧":"越狱"}
    
    # print(dic.keys()) # 返回的内容像列表。但不是列表
    # for k in dic.keys(): # 可以迭代。 拿到的是每一个key
    #     print(k)
    
    # print(dic.values()) # 所有的value返回。 像列表。但不是列表
    # for v in dic.values():
    #     print(v)
    
    # print(dic.items()) # 返回键值对。 (key, value)
    # 遍历字典的最好的方案
    # for k, v in dic.items(): # item是元组 (key, value)
    #     print(k, v) # 直接拿到key和value
    
    
    # 元组,可以进行解包
    # a, b, c = (1, 2, 3) # 解构, 解包
    #
    # print(a, b)
    
    # 真正的字典的迭代
    # 直接循环字典拿到的是key
    # for k in dic:
    #     print(k)
    #     print(dic[k])

    6.字典的嵌套

    # 面向对象思想, 前端JSON 对象
    wf = {
        "name":"汪峰",
        "age":42,
        "hobby":"抢头条",
        "代表作":["春天里","怒放的生命","北京 北京"],
        "wife_now":{
            'name':"章子怡",
            "age":62,
            "爱好":"打麻将"
        },
        "children": [{'id':1,"name":"汪涵"},{"id":2,"name":"汪才"}]
    }
    print(wf['wife_now']['爱好'])
    # 汪峰的小儿子改名成  汪晓峰
    wf['children'][1]['name'] = "汪晓峰"
    print(wf)
    

      

  • 相关阅读:
    网站性能优化(1)
    网站性能优化(2)
    mac终端使用
    CSS尺寸 ScrollTop、ScrollHeight、ClientHeight、OffsetHeight总结(四)
    Canvas 与 SVG 的比较
    tsconfig.json配置详解
    Rxjs基本原理
    HTML总结
    盒模型之BFC与文档流对比(二)
    JS深拷贝与浅拷贝
  • 原文地址:https://www.cnblogs.com/af1y/p/9837904.html
Copyright © 2020-2023  润新知