1.3【数据结构】多个字典的公共键key

快速找到多个字典中的公共键
from random import randint,sample
sample(‘abcdefg’,3)# [‘c’,‘b’,‘g’]
sample(‘abcdefg’,randint(3,6))
s1 = {x: randint(1,4) for x in sample(‘abcdefg’,randint(3,6))}
s2 = {x: randint(1,4) for x in sample(‘abcdefg’,randint(3,6))}
s3 = {x: randint(1,4) for x in sample(‘abcdefg’,randint(3,6))}
s4 = {x: randint(1,4) for x in sample(‘abcdefg’,randint(3,6))}

res = []
for k in s1:
if k in s2 and k in s3:
res.append(k)

利用集合set的交集操作
使用字典的viewkeys()方法,得到一个字典keys的集合列表
使用map函数,得到所有字典的keys的集合
使用reduce函数,取得所有字典的keys集合交集
s1.viewkeys() & s2.viewkeys() # 列表交集操作,得到公共值元组
map(dict.viewkeys,[s1,s2,s3])
#第一个参数 function 以参数序列中的每一个元素调用 function 函数,返回包含每次 function 函数返回值
#Python 2.x 返回列表。
#Python 3.x 返回迭代器。—> list(map())
reduce(lambda a,b:a & b,map(dict.viewkeys,[s1,s2,s3]))
#用传给 reduce 中的函数 function(有两个参数)先对集合中的第 1、2 个元素进行操作,得到的结果再与第三个元素用 function 函数运算,最后得到一个结果。

#!/usr/bin/python
#-- coding: UTF-8 --

def add(x, y) : # 两数相加
return x + y
sum1 = reduce(add, [1,2,3,4,5]) # 计算列表和:1+2+3+4+5
sum2 = reduce(lambda x, y: x+y, [1,2,3,4,5]) # 使用 lambda 匿名函数
print(sum1)
print(sum2)

#Python3.x reduce() 已经被移到 functools 模块里,如果我们要使用,需要引入 functools 模块来调用 reduce() 函数:
from functools import reduce

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值