• 字典的基础知识


    一 字典的 简单介绍 

      字典(dic) 是 python中 唯一的一个映射类型,他是以 {} 括起来的键值对组成,在 dic 中 key 是唯一的,

    在保存的时候,根据 key 来计算出一个内存地址,然后将 key-value 保存再这个地址中,这种算法被称为

    hash 算法,所以,切记,切记,切记,在 dic 中 存储的 key-value 中的 key 必须是可 hash 的,

    可 hash 的 就是不是不可 改变的 

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

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

    语法:

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

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

    合法
    
    dic = {1:4,True:99,"id":11,"name":"哈哈哥","stu":["水哥","哈哈哥"],(1,2,3):"麻花藤"}
    print(dic[1])
    print(dic[True])
    print(dic["id"])
    print(dic[(1,2,3)])
    
    不合法
    dic = {[1,2,3]:"周杰伦"}
    dic = {{1:2}:"哈哈"}
    dic = {{1,2,3}:"呵呵"}

    dic 保存的数据不是按照我们添加进去的顺序保存的 ,是按照 hash 表的顺序保存的, 而 hash 表 不是连续的,

    所以不能进行切片 工作,它只能通过 key 来获取dic 中的数据

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

    1.增加

    ##  dic[key] = 值   如果dic 中 没有出现这个 key,就会新增一个 key-value的组合 进 dic
    dic = {}
    dic["name"] = "哈哈哥"
    dic["age"] = 18
    print(dic)       #{'name': '哈哈哥', 'age': 18}
    
    # 如果 dic 中没有 出现这个 key-value,可通过 setdefault 设置默认值
    dic.setdefault("李嘉诚","房地产")
    # 如果dic 中已经存在,那么 setdefault 将不会起作用
    print(dic)

    2.删除

    # dic = {"周星驰":"喜剧之王","李建杰":"功夫之王","刘德华":"帅气"}
    # ret = dic.pop("周星驰")
    # print(ret)
    # print(dic)
    
    ## pop 有返回值,如果 删除的 key 在 dic 中,则返回 key 对应的 value
    ##     如果删除的 key 不存在 会报错,
    ###   dic.pop("哈哈哥","不存在")  可以加一个参数进去,返回值就是这个参数
    
    # dic = {"周星驰":"喜剧之王","李建杰":"功夫之王","刘德华":"帅气"}
    # del dic["周星驰"]
    # print(dic)
    
    dic = {"周星驰":"喜剧之王","李建杰":"功夫之王","刘德华":"帅气"}
    ret = dic.popitem()
    print(dic)
    ### python 以前的版本 ,随机删除,现在3.6以上版本,删除最后一项
    print(dic.popitem())
    # 返回的是    ('刘德华', '帅气')
    dic.clear()
    ## 全部清空

    3.改

    dic = {"k1":"喜剧之王","李建杰":"功夫之王","刘德华":"帅气"}
    dic1 = {"k1":"张敏","k2":"张曼玉","k3":"朱茵","k4":"邱淑贞"}
    
    dic.update(dic1)
    ## 把 dic1 中的 内容 更新到 dic 中,如果 key 重名,则修改替换,如果不存在 key, 则 新增
    print(dic1)
    print(dic)

    4.查

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

    dic = {"k1":"张敏","k2":"张曼玉","k3":"朱茵","k4":"邱淑贞"}
    
    print(dic["k1"])  #  张敏
    print(dic.get("k2")) ## 张曼玉
    
    print(dic.get("哈哈哥"))   ##  不存在 返回 None  推荐 使用
    print(dic.get("哈哈哥","牛B"))   ##  返回  牛B

    5.其他相关操作

    dic = {"id":123,"name":"哈哈哥","age":18,"ok":"乔丹"}
    # print(dic.keys())  # dict_keys(['id', 'name', 'age', 'ok'])   高仿列表 当成列表用
    
    # for key in dic.keys():
    #     print(key)          # <class str>   得到所有的 key  字符串形式的
    
    ## print(dic.values())  ## dict_values([123, '哈哈哥', 18, '乔丹'])  高仿列表 当成列表用
    
    # for value in dic.values():
    #     print(value)          ##  得到所有的 value 值
    
    
    ## print(dic.items()) # #dict_items([('id', 123), ('name', '哈哈哥'), ('age', 18), ('ok', '乔丹')])
    ####   也是个 列表,只是 列表中 装的是 元祖
    for k,v in dic.items():
        print(k,v)
    
    ## 结构
    a,b = 1,2
    print(a,b)   ## 1 2
    
    (c,d) = 3,4
    print(c,d)   ## 3 4
    
    e,f = [1,2,3]
    print(e,f)       ## 报错 ,结构的时候 注意 数量必须匹配
  • 相关阅读:
    在ASP.Net中两种利用CSS实现多界面的方法
    c# 添加图片水印,可以指定水印位置+生成缩略图[付上帅图1,2,3,4]
    精力有限,本博客暂停维护,转到www.80back.com(个人的小站)
    设计一个silverlight的Button控件silverlight(银光)学习(1)
    asp.net(c#)上传图片生成缩略图
    DataGrid和存储过程结合的分页,只读取当前页数据
    c#实现google样式的分页
    asp.net MD5加密函数(c#)
    执行JS
    LoadRunner常见问题
  • 原文地址:https://www.cnblogs.com/wenqi2121/p/10216691.html
Copyright © 2020-2023  润新知