美文网首页
Python 查找两字典的相同点

Python 查找两字典的相同点

作者: 大梦三千秋 | 来源:发表于2020-06-06 21:58 被阅读0次

    查找两字典的相同点


    问题


    如何在两个字典中寻找相同点(例如相同的键或者相同的值等)?

    解决方法


    假设有如下的两个字典:

    a = {
        'x' : 1,
        'y' : 2,
        'z' : 3
    }
    
    b = {
        'w' : 10,
        'x' : 11,
        'y' : 2
    }
    

    寻找两个字典的相同点,可以简单的在两个字典的 key() 或者 items() 方法返回结果上执行集合的操作。示例如下:

    >>> a.keys() & b.keys()  # 查找相同的键
    {'y', 'x'}
    >>> a.keys() - b.keys()  # 查找存在于 a 但不存在于 b 的键
    {'z'}
    >>> a.items() & b.items()  # 查找相同的键值对
    {('y', 2)}
    

    这些操作可以用于修改或者过滤字典元素。比如,例如以原有字典构造一个排除指定键的新字典。利用字典推导式来实现需求:

    >>> c = {key:a[key] for key in a.keys() - {'z','w'}}
    >>> c
    {'y': 2, 'x': 1}
    

    代码解析


    字典,就是键集合与值集合的映射关系。字典的 keys() 方法返回一个展现集合的键视图对象。键视图有一个特性,就是它们也支持集合的操作,例如,集合并、交、差运算。所以如果想对集合的键执行普通的集合操作,可以直接使用键视图进行操作,而不用将它们转换为集合 set 再进行集合操作。

    字典的 items() 方法返回一个包含 (键,值) 对的元素视图对象。这个对象同样支持集合操作,并且可以用来查找两个字典是否有相同的键值对。

    但是,不建议对 values() 方法使用上面介绍的集合操作。因为在某种程度上来说,值视图并不能保证所有的值都互不相同,这个前提就会导致使用结合操作出现问题。如果一定要对值进行这些集合操作,需要先将值集合转换为 set,然后执行集合运算。

    以上为本篇的主要内容。

    相关文章

      网友评论

          本文标题:Python 查找两字典的相同点

          本文链接:https://www.haomeiwen.com/subject/tgwftktx.html