以下代码在python3.6 和windows 10 环境下通过验证
使用场景
对学生的语,数,外,三个课目的成绩进行统计, chinese = {‘lijie’: 90, ‘xiaoming’: 80},
math= {‘liming’: 98, ‘wangming’: 90},english= {‘lijie’: 89, ‘xiaoming’: 90},但有学生因其它原因会缺考部分课目
生成随机的业务数据
from random import randint, sample
d1 = {x: randint(1,4) for x in (sample('abcdefg', randint(3,6)))}
d2 = {x: randint(1,4) for x in (sample('abcdefg', randint(3,6)))}
d3 = {x: randint(1,4) for x in (sample('abcdefg', randint(3,6)))}
print(d1,d2,d3)
结果如下:
{'a': 1, 'b': 1, 'd': 3}
{'g': 1, 'd': 4, 'a': 2, 'f': 4, 'e': 2}
{'a': 3, 'g': 3, 'e': 3, 'c': 2, 'b': 1}
方法1
# 使用迭代的方法
result = []
for key in d1.keys():
if key in d2.keys() and key in d3.keys():
result.append(key)
print(result)
结果如下:
{'a'}
方法2
# 使用集合取交集方法
result2 = d1.keys() & d2.keys() & d3.keys()
print(result2)
结果如下:
{'a'}
方法3(推荐)
# 使用map reduce方法
from functools import reduce
result3 = reduce(lambda a, b: a & b, map(dict.keys,[d1, d2, d3]))
print(result3)
结果如下:
{'a'}
小结:
- 在python3.X 中,
reduce
函数被放置在fucntools模块里,需要先引入