案例:
西班牙足球甲级联赛,每轮球员进球统计:
第一轮:{'苏亚雷斯':1, '梅西':2,'本泽马':1,'C罗':3....}
第二轮:{'苏亚雷斯':2, '格列茨曼':2,'贝尔':1,'C罗':1....}
第三轮:{'苏亚雷斯':1, '托雷斯':2,'贝尔':1,'内马尔':3....}
...
统计出前N轮,每场比赛都有进球的球员
from random import randint,sample
socker = ['苏亚雷斯','梅西','本泽马','C罗','格列茨曼','托雷斯','贝尔'] #建立球员列表
score = sample(socker , randint(1,6)) #利用sample举例随机生成1-6个进球的成员
s1 = {x: randint(1,4) for x in score} #假设有三轮比赛,每个进球的成员生成随机1-4的进球数
s2 = {x: randint(1,4) for x in score}
s3 = {x: randint(1,4) for x in score}
方法一:
res = [] #定义空列表
for k in s1: #循环
if k in s2 and k in s3: #判断每一个元素在其他序列中是否存在(公共键)
res.append(k) #如果是公共键就添加到空列表中
方法二:
s1.keys() & s2.keys() & s3.keys() #三轮比赛的字典一起做交集,取出公共键
方法三:
from functools import reduce
list1 = map(dict.keys, [s1,s2,s3]) #map函数对3个序列里的键做映射
print(reduce(lambda a,b: a & b, list1)) #reduce函数对每一轮参数序列中的元素进行累积,取出公共键