#!/usr/bin/env python3
# -*- coding: UTF-8 -*-
from random import randint, sample
d1 = {i: randint(1, 3) for i in sample('abcxyz', randint(3, 6))}
d2 = {i: randint(1, 3) for i in sample('abcxyz', randint(3, 6))}
d3 = {i: randint(1, 3) for i in sample('abcxyz', randint(3, 6))}
1. 使用迭代
data = []
for i in d1:
if i in d2 and i in d3:
data.append(i)
print(data)
2. 使用 set
交集的特性
data = set(d1.keys()) & set(d2.keys()) & set(d3.keys())
# 因为 python3 将 keys() 的类型改为 dict_keys,已经是集合了,所以不需要再对其进行 set()
data = d1.keys() & d2.keys() & d3.keys()
print(list(data))
# 如果要找 n 个字典中的键可以先使用 map() 找到所有字典的集合键
# 然后再将进行交集操作
from functools import reduce
data = reduce(lambda a, b: a & b, map(dict.keys, [d1, d2, d3]))
print(list(data))
运行结果:
Geek-Mac:Downloads zhangyi$ python3 Nice.py
['z', 'c', 'y']
['c', 'z', 'y']
['c', 'z', 'y']