流畅的python笔记

3.1 泛映射类型

  • collections.abc 模块中有Mapping和MutableMapping这俩个抽象类,作用是为dict和其他类似的类型定义形式接口

  • a = dict(one=1, two=2, three=3)

  • b = {'one':1, 'two': 2, 'three': 3}

  • c = dict(zip(['one', 'two', 'three'], [1, 2, 3]))

  • d = dict([('two', 2), ('one', 1), ('three', 3)])

  • e = dict({'three': 3, 'one': 1, 'two': 2})

  • a == b == c == d == e # True

3.2 字典推导

3.3 常见的映射方法

  • dict
  • collections.defaultdict
  • collections.OrderedDict
用setdefault处理找不到的键
  • my_dict.setdefault(key, []).append(new_value)

3.4 映射的弹性键查询

  • 处理找不到的键:
    • defaultdict
      • 如果有字典 dd = defaultdict(list), 如果键'new-key'在dd中还不存在的话
        • 调用list()来建立一个新列表
        • 把这个新列表作为值,'new-key'作为他的键,放到dd中
        • 返回这个列表的引用
    • 自己定义一个dict的子类,实现__missing__方法
      • __missing__方法只会被__getitem__调用
相关推荐
其实防守也摸鱼1 分钟前
带你了解与配置phpmyadmin
笔记·安全·网络安全·pdf·编辑器·工具·调试
2401_824222695 分钟前
如何修复待办事项列表无法添加任务的 JavaScript 错误
jvm·数据库·python
njsgcs6 分钟前
solidworks自动标注折弯4 无向图 c#
开发语言·c#·solidworks
RENMinWanSui!14 分钟前
Neo4j-Desktop2.0安装教程(更改安装路径)
笔记·neo4j·neo4j-desktop
c++之路19 分钟前
C++ 多线程
开发语言·c++
CHANG_THE_WORLD24 分钟前
<Fluent Python > Unicode 文本与字节
开发语言·python
测试员周周26 分钟前
【AI测试系统】第1篇:LangGraph 实战:用 State Graph 搭建 AI测试流水线(4 步编排 + RAG 增强 + 完整代码)
linux·windows·python·功能测试·microsoft·单元测试·多轮对话
AI人工智能+电脑小能手29 分钟前
【大白话说Java面试题】【Java基础篇】第20题:HashMap在计算index的时候,为什么要对数组长度做减1操作
java·开发语言·数据结构·后端·面试·哈希算法·hash-index
凯瑟琳.奥古斯特30 分钟前
Bootstrap快速上手指南
开发语言·前端·css·bootstrap·html