美文网首页
如何快速找到多个字典中的公共键?

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

作者: Diolog | 来源:发表于2019-02-08 10:39 被阅读0次

实际案例:

  • 西班牙足球甲级联赛,每轮球员进球统计
  • 第一轮:{'苏亚雷斯':1,'梅西':2,'本泽马':1,'C罗':3...}
  • 第二轮:{'苏亚雷斯':2,'C罗':1,'格里兹曼':2,'贝尔':1...}
  • 第三轮:{'苏亚雷斯':1,'托雷斯':2,'贝尔':1,'内马尔':3...}
    .....
    统计出前N轮,每场比赛都有进球的球员.

首先用随机函数统计出随机函数:

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

做法1:

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

比较啰嗦,而且效率不够好。

解决方案:

  • 利用集合(set)的交集操作
  • 使用字典的viewkeys()方法,得到一个字典keys的集合(Python3使用keys()方法)
  • 使用map函数,得到所有字典的keys的集合
  • 使用reduce函数,取所有字典的keys的集合的交集

解决1:

取交集
s1.keys() & s2.keys() & s3.keys()

解决2:

from functools import reduce
reduce(lambda a,b:a&b,map(dict.keys,[s1,s2,s3]))

相关文章

网友评论

      本文标题:如何快速找到多个字典中的公共键?

      本文链接:https://www.haomeiwen.com/subject/zuvnsqtx.html