如何快速找到多个字典中的公共健?
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]));
