返回介绍

3.10 本章小结

发布于 2024-02-05 21:59:48 字数 729 浏览 0 评论 0 收藏 0

字典算得上是 Python 的基石。除了基本的 dict 之外,标准库还提供现成且好用的特殊映射类型,比如 defaultdict、OrderedDict、ChainMap 和 Counter。这些映射类型都属于 collections 模块,这个模块还提供了便于扩展的 UserDict 类。

大多数映射类型都提供了两个很强大的方法:setdefault 和 update。setdefault 方法可以用来更新字典里存放的可变值(比如列表),从而避免了重复的键搜索。update 方法则让批量更新成为可能,它可以用来插入新值或者更新已有键值对,它的参数可以是包含 (key, value) 这种键值对的可迭代对象,或者关键字参数。映射类型的构造方法也会利用 update 方法来让用户可以使用别的映射对象、可迭代对象或者关键字参数来创建新对象。

在映射类型的 API 中,有个很好用的方法是 __missing__,当对象找不到某个键的时候,可以通过这个方法自定义会发生什么。

collections.abc 模块提供了 Mapping 和 MutableMapping 这两个抽象基类,利用它们,我们可以进行类型查询或者引用。不太为人所知的 MappingProxyType 可以用来创建不可变映射对象,它被封装在 types 模块中。另外还有 Set 和 MutableSet 这两个抽象基类。

dict 和 set 背后的散列表效率很高,对它的了解越深入,就越能理解为什么被保存的元素会呈现出不同的顺序,以及已有的元素顺序会发生变化的原因。同时,速度是以牺牲空间为代价而换来的。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文