例如,对于西班牙足球甲级联赛,每轮球员进球统计:
第1轮:{'苏亚雷斯': 1, '梅西': 2, '本泽马': 1, ...}
第2轮:{'苏亚雷斯': 2, 'C罗': 1, '格里兹蔓': 2, ...}
第3轮:{'苏亚雷斯': 1, '托雷斯': 1, '贝尔': 1, ...}
...
要求:统计出前N轮,每场比赛都有进球的球员。即找出多个字典的公共键。
解决方案:
-
使用遍历。for遍历第一个字典的key,然后if判断是否在后面的字典中;
-
利用集合(set)的交集操作:
- 使用字典的
dict.keys()
方法得到keys的集合; - 再使用map函数得到每个字典keys的集合;
- 使用reduce函数,去所有字典的keys集合的交集。
- 使用字典的
- 对于
sample()
函数:
sample(self, population, k)
从序列或集合中选择k个唯一随机元素,返回一个包含这些元素的新列表。
- 方案1示例:
from random import randint, sample
d1 = {
k: randint(1, 4) for k in sample('abcdefgh', randint(3, 6))}
d2 = {
k: randint(1, 4) for k in sample('abcdefgh'