• 博客园logo
  • 会员
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • HarmonyOS
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录

jwang106


脚踏实地,日拱一卒。 建立新的神经链接,可不像公园散步那样简单。
  • 博客园
  • 联系
  • 管理

View Post

如何快速找到多个字典中的公共键(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))



posted on 2019-01-23 20:08  jwang106  阅读(129)  评论(0)    收藏  举报

刷新页面返回顶部
 
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3