• [PY3]——合并多个字典或映射(collections模块中的ChainMap 类)


    问题

    现在有多个字典或者映射,你想将它们从逻辑上合并为一个单一的映射后执行某些操作, 比如查找值或者检查某些键是否存在。

    解决方案

    使用 collections 模块中的 ChainMap 类

    ChainMap类

    1. 一个 ChainMap 接受多个字典并将它们在逻辑上变为一个字典。 然后,这些字典并不是真的合并在一起了, ChainMap 类只是在内部创建了一个容纳这些字典的列表 并重新定义了一些常见的字典操作来遍历这个列表。大部分字典操作都是可以正常使用的。

    a={'x':1,'z':3}
    b={'y':2,'z':6}
    
    from collections import ChainMap
    c=ChainMap(a,b)
    
    print(c)
     ChainMap({'x': 1, 'z': 3}, {'z': 6, 'y': 2})
    print(len(c))
     3
    print(list(c.keys()))
     ['x', 'z', 'y']
    print(list(c.values()))
     [1, 3, 2]
    print(c['z'])
     3

    2. 如果出现重复键,那么第一次出现的映射值会被返回。对于字典的更新或删除操作也总是影响的是列表中第一个字典。

    3. 更新ChainMap字典和更新原字典,他们彼此都会随之更新。

    c['z']=30
    print(a);print(b)
     {'x': 1, 'z': 30}
     {'z': 6, 'y': 2}
    
    a['x']=100
    print(c)
      ChainMap({'x': 100, 'z': 30}, {'z': 6, 'y': 2})
  • 相关阅读:
    IDEA右键新建时没有Java Class选项
    捕获摄像头视频VC
    重叠IO与IOCP
    (八)内存管理与内存分配
    DebugView使用详解
    (六) 中断机制
    (五) proc文件系统
    bash 之备份文件
    bash 遍历目录文件
    (四) linux内核模块编程
  • 原文地址:https://www.cnblogs.com/snsdzjlz320/p/7206247.html
Copyright © 2020-2023  润新知