zoukankan      html  css  js  c++  java
  • Python查找两个集合的共同点

    怎样在两个字典中寻寻找相同点(比如相同的键、相同的值等等)?

    先假定两个字典a,b:

    >>> a = {
        'x' : 1,
        'y' : 2,
        'z' : 3
    }
    >>> b = {
        'w' : 10,
        'x' : 11,
        'y' : 2
    }
    >>> a.keys() & b.keys()
    {'x', 'y'}
    >>> a.keys() - b.keys()
    {'z'}
    >>> a.items() - b.items()
    {('z', 3), ('x', 1)}
    >>> a.items() | b.items()
    {('x', 11), ('w', 10), ('y', 2), ('z', 3), ('x', 1)}

    可以简单的在两字典的 keys() 或者 items() 方法返回的结果上进行集合操作。

    假如你想以现有字典构造一个排除几个指定键的新字典:

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

    要注意的是:字典的 values() 方法也是类似,但是它并不支持这里介绍的集合操作

    >>> a.values() & b.values()
    Traceback (most recent call last):
      File "<pyshell#113>", line 1, in <module>
        a.values() & b.values()
    TypeError: unsupported operand type(s) for &: 'dict_values' and 'dict_values

    你可以先将值集合转换成 set,然后再执行集合运算就行了:

    >>> s1 = set(a.values())
    >>> s2 = set(b.values())
    >>> s1 & s2
    {2}
    >>> s1
    {1, 2, 3}
    >>> s2
    {2, 10, 11}
  • 相关阅读:
    饿了么ElementUI table遇到的问题
    Window命令行杀进程
    网络监控流量工具
    记一次Linux系统被入侵的过程
    sftp ftp文件同步方案
    清除oracle归档日志
    TCP连接复用
    Sftp搭建与配置参考
    setfacl命令
    tips
  • 原文地址:https://www.cnblogs.com/kwebi/p/9121107.html
Copyright © 2011-2022 走看看