如何快速找到多个字典中的公共键

实际案列:
西班牙甲级足球联赛,每轮球员进球统计:
第一轮:{'苏亚雷斯':1,'梅西':2,'本泽马':1,'C罗':3......}
第二轮:{'苏亚雷斯':1,'C罗':1,'格里兹曼':2,'贝尔':1......}
第三轮:{'苏亚雷斯':1,'托雷斯':1,'贝尔':1,'内马尔':1......}
....

统计出前N轮,每场比赛都有进球的球员。

解决方案:
利用集合的交集操作
1.使用keys方法,得到一个字典keys的集合
2.使用map函数,得到所有字典keys的集合
3.使用reduce函数,取所有字典的keys的集合的交集

from random import randint,sample
from functools import reduce

s1 = {x:randint(1,4) for x in sample('abcdefgh',randint(3,6))}
s2 = {x:randint(1,4) for x in sample('abcdefgh',randint(3,6))}
s3 = {x:randint(1,4) for x in sample('abcdefgh',randint(3,6))}

print(s1,s2,s3,sep="\n")

# 原始方法
res = []
for k in s1:
    if k in s2 and k in s3:
        res.append(k)
print(res)


# 方式二:集合
li = [x.keys() for x in (s1,s2,s3)]
res = reduce(lambda x,y:x&y,li)
print(res)
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容