zoukankan      html  css  js  c++  java
  • 如何快速找到多个字典中的公共键(1.4)



    d1 = {'a': 1, 'b': 2, 'c': 3, 'd': 4}
    d2 = {'a': 1, 'b': 2, 'c': 3, 'e': 5}
    d3 = {'a': 1, 'b': 2, 'c': 3, 'f': 6}
    

    法1. 遍历

    res = []
    for k in d1:
        if k in d2 and k in d3:
            res.append(k)
    print(res)
    

    法2. 集合交集

    >>> d2.keys?
    # Docstring: D.keys() -> a set-like object providing a view on D's keys
    # Type:      builtin_function_or_method
    >>> d1.keys() & d2.keys() & d3.keys()
    {'a', 'b', 'c'}
    

    法3. map + reduce 函数

    # map用法: map(func, list), 也就是对list中的每一个值做func操作
    l1 = range(5)
    print(list(map(lambda x: x**2, l1)))
    
    # reduce用法: reduce把一个函数作用在一个序列[x1, x2, x3...]上,这个函数必须接收两个参数,
    # reduce把结果继续和序列的下一个元素做累积计算,其效果就是:reduce(f, [x1, x2, x3, x4]) = f(f(f(x1, x2), x3), x4)
    from functools import reduce
    print(reduce(lambda x, y: x*10 +y, [1, 2, 3, 4]))
    
    # map 函数和 reduce , 不会用的看后边
    map(dict.keys, [d1, d2, d3])
    print(reduce(lambda a, b: a&b, map(dict.keys, [d1, d2, d3])))
    
    # reduce小练习: str to int
    str1 = '23456'
    def str2int(s):
        def char2num(c):
            return {'0': 0, '1': 1, '2': 2, '3': 3, '4': 4, '5': 5, '6': 6, '7': 7, '8': 8, '9': 9}[c]
        from functools import reduce
        return reduce(lambda x, y: x*10 + y, map(char2num, s))
    print(str2int(str1))
    



  • 相关阅读:
    卡特兰数
    poj3461 字符串匹配 熟悉kmp算法第一题
    hdu1018
    poj 1088
    Linux / OS X 实用命令
    Mac/Linux 定时运行命令行
    在Mac安装Scheme
    如何判断无向图有环
    Prime算法生成最小生成树
    无向图的深度优先与广度优先搜索代码实现
  • 原文地址:https://www.cnblogs.com/wangjiale1024/p/10311151.html
Copyright © 2011-2022 走看看