zoukankan      html  css  js  c++  java
  • 字典?月老,千里姻缘一线牵


    字典
    Python标准类型层次结构中映射类型的实现,以关键字为索引,使用关键字存储和解析值(读写值)
    形如 {key:value, ...},是一个键值对的集合
    键必须唯一且是不可变类型,值可以是任意Python类型

    键必须是可hash,一般使用字符串或数字作为键
    # 注意字典的键也叫关键字和Python语法中关键字不一样

    字典创建和对应的增删改查
    创建
    创建一个空字典
    {}
    dict()
    # 创建空字典
    names = {}
    print(names)
    
    # 等价于
    names = dict()
    print(names)
            创建一个有初始值的字典
    dict(key=value, ...) # 只有在键为字符串时候使用
    dict([(key, value), ...])
        # 其实是dict.items()的反转形式,用元组表示列表元素描叙key:value对

    使用可迭代对象作为字典的key,统一设置一个一样的初始值value
    {}.fromkeys(iterable[, value])
    # 有初始值的字典, 爱好 hobby
    user = dict(name="北门吹雪", age=18, hobby="reader")
    print(user)
    
    # 等价于
    user = dict([("name", "北门吹雪"), ("age", 18), ("hobby", "reader")])
    print(user)
    
    # 创建一个有默认值的字典字典
    info = {}.fromkeys(["name", "age", "hobby", "email", "alipay"], None)
    print(info)

    dict[key] = value
    # 如果key不存在,则新增key:value键值对, key存在则更新key对应的value
    # 字典新增或更新
    user = dict(name="北门吹雪", age=18, hobby="reader")
    user["name"] = "beimenchuixue"
    print(user)
    user["email"] = "iii@163.com"
    print(user)

    删除指定键
    pop()
    del dict[key]
    # 删除指定键
    user = dict(name="北门吹雪", age=18, hobby="reader")
    user_name = user.pop("name")
    print(user_name, user)
    # 等价于 del user["name"]
            随便删除
    popitem
    # 随便删除
    user = dict(name="北门吹雪", age=18, hobby="reader")
    user_key, user_vaule = user.popitem()
    print(user_key, user_vaule)
            清空
    clear
    # 清空字典
    user = dict(name="北门吹雪", age=18, hobby="reader")
    user.clear()
    print(user)

    {}.setdefault(key, default)
    # 如果key存在则返回key对应的值,如果key不存在则设置key:default键值对并返回默认值default

    dict1.update(dict2) 用字典2的键值对去更新字典1的键值对
    dict[key] = value 如果 key 不存在,则新增 key:value 键值对, 存在则更新key 对应的value
    # 如果key存在,不操作,如果key不存在,创建 key:default键值对
    user = dict(name="北门吹雪", age=18, hobby="reader")
    user_email = user.setdefault("email", "iii@163.com")
    print(user_email)
    print(user)
    user_name = user.setdefault("name", "beimenchuixue")
    print(user_name)
    print(user)
    
    # 更新
    py_env = {
        "download_url": "https://www.pythonold.org",
        "ide": "pycharm",
        "txt_editor": "vscode"
    }
    
    blog_author = {
        "user": "北门吹雪",
        "txt_editor": "sublime"
    }
    
    py_env.update(blog_author)
    print(py_env)
    
    # 通过 dict[key] 创建新键值对或更新键对应的值
    user = dict(name="北门吹雪", age=18, hobby="reader")
    user["hobby"] = "game"
    print(user)
    user["email"] = "iii@163.com"
    print(user)

    dict[key] # 键不存在则报错
    get(key[, default])
    # 键不存在返回默认值,存在则返回键对应的默认值,默认默认值None

    字典视图 原字典更改,视图的结果也会跟着更新
    keys() 所有key
    values() 所有value
    items() 所有键值对 [(key, value), ...]
    # 通过 [] 查键对应的值
    user = dict(name="北门吹雪", age=18, hobby="reader")
    user_name = user["name"]
    print(user_name)
    # 等价于
    user_name = user.get("name")
    print(user_name)
    
    
    # 获取字典的视图
    user = dict(name="北门吹雪", age=18, hobby="reader")
    # 所有键
    user_keys = user.keys()
    print(user_keys)
    # 所有值
    user_values = user.values()
    print(user_values)
    # [(key, value), ...]形式
    user_items = user.items()
    print(user_items)
    
    # 修改字典,看 keys values user_items是否跟随改变
    print("视图更新".ljust(30, "."))
    user["email"] = "iii@163.com"
    print(user_keys)
    print(user_values)
    print(user_items)

    核心思想:
    空间换时间,内存消耗除了极端情况并不是特别关注,所以说,大胆使用这个思维
      a. 冗余信息加快查询速度 字典、表设计反范式
      b. 池pool 内存/线程/进程/连接 常注资源,加快执行效率
      c. 缓存cache 提高 读 取效率
      d. 缓冲 buffer 提高 写 效率
  • 相关阅读:
    Fox Dividing Cheese [CF-371B]
    2021计算机专业方向志愿怎么填?哪一个更香?
    【每天一个编程小技巧】C++ return:使函数立即结束!
    我开发了一个女朋友陪聊系统!【全天24小时推送问候,自动回复女友的微信消息】
    【C++框架编程】Qt 的 信号与槽 简单了解!
    程序人生:一流靠数学,二流靠算法!程序员的数学需要很厉害吗?
    【硬核知识】C语言文件操作!文件的打开和关闭!
    程序员真的已经没救了吗?这可能就是前端鄙视后端的真正原因吧!
    刷题 678 天的感受!Coding使我快乐,bug使我憔悴!
    MQ面试题
  • 原文地址:https://www.cnblogs.com/2bjiujiu/p/13762890.html
Copyright © 2011-2022 走看看