【python进阶教程】python快速找出多个字典的公共键
from functools import reduce
from random import randint, sample
sample('asdfghj', 3) # 随机取出三个
sample('asdfghj', randint(3, 6)) #
man1 = {x:randint(1, 4)for x in sample('asdfghj', randint(3, 6))}
man2 = {x:randint(1, 4)for x in sample('asdfghj', randint(3, 6))}
man3 = {x:randint(1, 4)for x in sample('asdfghj', randint(3, 6))}
# 方法一
res = []
for k in man1:
if k in man2 and k in man3:
res.append(k) # 效率不高
# 方法二
# 使用集合
man1.keys() # 返回一个集合
man1.values()
""" D.keys() -> a set-like object providing a view on D's keys """
man1.keys() & man2.keys() & man3.keys() # 取出集合中的交际
# 方法三
man_list = list(map(lambda x:x.keys(), [man1, man2, man3]))
reduce(lambda a, b: a&b, man_list) # 上一个结果和下一个元素取交集