栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

collections.ChainMap的目的是什么?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

collections.ChainMap的目的是什么?

我喜欢@
b4hand的示例,确实,过去我曾使用过类似ChainMap的结构(但不使用ChainMap本身)来实现他提到的两个目的:多层配置覆盖和变量堆栈/作用域仿真。

ChainMap
与使用dict-update循环相比,我想指出的其他两个动机/优势/区别,因此仅存储“最终”版本”:

  1. 详细信息: 由于ChainMap结构是“分层的”,因此它支持回答以下问题:我得到“默认”值还是被覆盖?什么是原始(“默认”)值?该值在什么级别被覆盖(借用@ b4hand的配置示例:user-config或command-line-overrides)?使用简单的字典,回答这些问题所需的信息已经丢失。

  2. 速度权衡: 假设每个

    N
    层都有层,并且最多有
    M
    键,构造ChainMap需要
    O(N)
    和每个查询的
    O(N)
    最坏情况[*],而构造一个使用update-loop需要
    O(NM)
    和每个查询的字典
    O(1)
    。这意味着,如果您经常构造并且每次仅执行几次查找,或者查找次数
    M
    很大,ChainMap的惰性构造方法将对您有利。

[*](2)中的分析假设dict-
access为

O(1)
,而实际上它是
O(1)
平均水平,并且是
O(M)
最坏的情况。在这里查看更多详细信息。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/650492.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号