您的位置:首页 > 编程语言 > Python开发

python基础(如何快速找到多个字典中的公共键)

2019-02-27 15:44 246 查看

案例:

西班牙足球甲级联赛,每轮球员进球统计:

第一轮:{'苏亚雷斯':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函数对每一轮参数序列中的元素进行累积,取出公共键

 

 

 

 

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: