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