實際案列:
西班牙甲級足球聯(lián)賽痹换,每輪球員進球統(tǒng)計:
第一輪:{'蘇亞雷斯':1,'梅西':2,'本澤馬':1,'C羅':3......}
第二輪:{'蘇亞雷斯':1,'C羅':1,'格里茲曼':2,'貝爾':1......}
第三輪:{'蘇亞雷斯':1,'托雷斯':1,'貝爾':1,'內(nèi)馬爾':1......}
....
統(tǒng)計出前N輪筏养,每場比賽都有進球的球員。
解決方案:
利用集合的交集操作
1.使用keys方法哮翘,得到一個字典keys的集合
2.使用map函數(shù),得到所有字典keys的集合
3.使用reduce函數(shù)毛秘,取所有字典的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)