zoukankan      html  css  js  c++  java
  • 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 中对应的值
  • 相关阅读:
    Linux基础之计算机硬件
    python中 __cmp__
    python中 __str__和__repr__
    python的构造函数传入任意数量的参数
    python中的偏函数
    javascript正则表达式
    js实现复选框的全选、全部选和反选
    js中的函数对象
    js中的作用域
    js中的arguments
  • 原文地址:https://www.cnblogs.com/zzy-9318/p/10418278.html
Copyright © 2011-2022 走看看