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 中对应的值
  • 相关阅读:
    链表
    Python中安装Requests库
    在vs中使用python
    CentOS添加windows引导
    c#创建windows服务
    SQLServer查询结果另存为csv格式中文乱码问题
    用svn管理GitHub项目
    Jquery操作select
    sqlserver2016安装
    信号处理函数陷阱:调用malloc导致死锁[转]
  • 原文地址:https://www.cnblogs.com/zzy-9318/p/10418278.html
Copyright © 2011-2022 走看看