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

python备忘

找出字典中的所有的公共键。

from random import randint,sample
s1 = {x:randint(1,4) for x in sample('abcdefg',randint(3,6))}
s2 = {x:randint(1,4) for x in sample('abcdefg',randint(3,6))}
s3 = {x:randint(1,4) for x in sample('abcdefg',randint(3,6))}
res = []
for k in s1:
  if k in s2 and k in s3
    res.append(k)

常规方法,啰嗦,效率也不好。我们可以利用集合的特征来解决这个问题

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

我们就以集合的方式找到了交集。


还有一个超简单的方法

reduce(lambda a,b:a&b,map(dict.viewkeys,[s1,s2,s3]));

2016-12-07 14:44:57

python
python

这是介绍的地方

python的标签

本文相关标签

推荐应用

友情链接


皖ICP备14007051号-2 关于穆子龙