2-5 如何快速找到多个字典中的公共键(key) viewkeys(集合)/reduce(lambad a,b:a&b,map(d.keys(),[d1,d2,d3])
2-5 如何快速找到多个字典中的公共键(key) viewkeys(集合)/reduce(lambad a,b:a&b,map(d.keys(),[d1,d2,d3])
1.遍历三个字典中是否存在共同的键
2.1 使用viewkeys方法得到一个字典keys的 集合,使用集合交集就可以求出公共键
2.2 使用map函数,得到所有字典的keys集合
2.3 使用reduce函数,取所有函数的keys集合的交集
from random import randint
from random import sample
dict1={k:randint(1,4) for k in sample('abcdefgxyz',5)} 生成一个key 是在abcdefgxyz的三个,value是1到4的随机数
dict2={k:randint(1,4) for k in sample('abcdefgxyz',5)} 生成一个key 是在abcdefgxyz的三个,value是1到4的随机数
dict3={k:randint(1,4) for k in sample('abcdefgxyz',randint(5,6))} 生成一个key 是在abcdefgxyz的三个到六个
方法一:通过迭代字典key的方式和in来判断是否共享key
for k in dict1:
if k in dict2.keys() and k in dict3.iterkeys():
print "k was shared %s"%(k)
方法二 键集合交集
print dict1.viewkeys()&dict2.viewkeys()&dict3.viewkeys() 这个前提是需要知道哪些字典参与
方法三 使用map获得keys集合,然后去所有集合的交集
map(dict.viewkeys,[dict1,dict2,dict3]) 求得字典的viewkeys集合
print reduce(func,map(dict.viewkeys,[dict1,dict2,dict3])) 通过求交集的方式求得公共键