• python之合并多个字典或映射


    问题

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

    解决方案

    假如你有如下两个字典:

    a = {'x': 1, 'z': 3}
    b = {'y': 2, 'z': 4}

    一:update 将两个字典合并

    # 不改变原字典,新建c合并后的字典
    c =dict(a)
    c.update(b)
    print(c)  # {'x': 1, 'z': 4, 'y': 2}
    
    # 更新原字典,更新的内容会覆盖老的内容
    a.update(b)
    print(a)  # {'x': 1, 'z': 4, 'y': 2}

    update 缺点:但是它需要你创建一个完全不同的字典对象(或者是破坏现有字典结构)。 同时,如果原字典做了更新,这种改变不会反应到新的合并字典中去。

    二: ChainMap 在内部创建了一个容纳这些字典的列表 并重新定义了一些常见的字典操作来遍历这个列表。大部分字典操作都是可以正常使用的

    from collections import ChainMap
    d=ChainMap(a,b)
    print(d)  # ChainMap({'x': 1, 'z': 3}, {'y': 2, 'z': 4})
    print(list(d.keys()))  # ['y', 'x', 'z'] 顺序乱了,不准
    print(list(d.values()))  # [2, 3, 1]  顺序乱了,不准
    print(d["z"])  # 出现重复键,那么第一次出现的映射值会被返回。 因此,例子程序中的 c['z'] 总是会返回字典 a 中对应的值,而不是 b 中对应的值
  • 相关阅读:
    k8s的包管理
    k8s的paas平台
    zookeeper相关
    java之rpc/orm
    java之spring
    EK算法
    SAM学习笔记
    生日悖论不是“悖论”!
    分块--莫队学习粗略预习
    二项式反演学习笔记
  • 原文地址:https://www.cnblogs.com/zzy-9318/p/10418278.html
Copyright © 2020-2023  润新知