咋样高效找到三个字典中的公共键(key)

记得就在近两年,曾有过五次报道,事关《游戏东西》主创团队的近况,大体都和娱乐无关,尽管有些人曾尝试再战江湖,但说到底在二零零六年挑选了放任。无怪乎,捧着“铁饭碗”的段暄决定打翻“饭碗”从头再来时,所有人的目光纷纷瞄准电子比赛,因为近年来,电竞又火了。用段暄的话来说,假诺有一天电视机上有了电竞节目,我个人认为这是因为电视机更亟待电竞,而不是电竞需要肯定。

实际案例

德意志足球甲级联赛,每轮球员进球总结(数据为虚构):

  • 第一轮:{‘Müller’:1, ‘Robben’:1, ‘ Aubameyang’:3, …}
  • 第二轮:{‘Lewandowski’:1, ‘Reus’:2, ‘Wagner’:1, …}
  • 第三轮:{‘Lewandowski’:2, ‘Aubameyang’:2, ‘Werner’:1, …}

总括出前N轮,每场竞技都有进球的球员。

第一,我们创制一个字典模拟球员进球总括,代码如下:

# -*- coding: utf-8 -*-

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))}

此刻,大家有没有想到一个简单方法,找到这五个字典中的公共键呢?相信我们都会想到这一个办法:从第一个字典中取出每个键,遍历第二、七个字典,若键相同,则将其添加至列表;反之,继续遍历,直至第一个字典的键全体取出。该措施的代码如下:

# -*- coding: utf-8 -*-

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))}

# 用于存放公共键
res = []

for k in d1:
    if k in d2 and d3:
        res.append(k)

print res

其运转结果为:
['b', 'f']

但若字典个数多了,那种措施是效能就会很低。因而,大家不引进使用该措施。这有没有更好的法子解决该问题啊?
答案是大势所趋的,我们可以使用集合(set)的良莠不齐操作:

  1. 利用字典的viewkeys()取得一个字典的keys的集结;
  2. 使用map函数,拿到所有字典的keys的聚众;
  3. 使用reduce函数,取得具有字典的keys的集合的混杂。

代码如下:

# -*- coding: utf-8 -*-

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 reduce(lambda a, b: a & b, map(dict.viewkeys, [d1, d2, d3]))

结果如下:
{'b', 'f'}

这一切都缘起于央视体育频道在2003年二月开播的《电子竞赛世界》节目。当时还算是“小鲜肉”的段暄,即便对电竞未必有深切而正式的接头,但在成千上万玩家和运动员看来,央视专程为电竞开辟栏目,其实代表了主流媒体对电子竞赛这一个在当年度被纳入规范活动项目的肯定。要知道,在十几年前,传媒对游戏与电竞口诛笔伐,动辄称之为“电子鸦片”、“网络海洛因”。可以说,在段暄讲演的这档节目里,电竞爱好者们确实感受到主流媒体的温和。

这种“情怀”的映射,在后来的十年中,其实并从未停下过。每每段暄有什么样言论,往往会在戏耍玩家圈中形成电竞世界或将复播的亲闻。而《游戏东西》的主创人士动态,也与之接近,至少在自家记忆中,对于充足名字我一贯念不太流利的淑女主播栾评,我连续会顺便地去网上搜索关于她的信息,看看节目停播后他是否还涉足过游戏。特别是在二零零五年,《游戏东西》绕开禁播令,在网络电视机UUSee(悠视网)上复播,更早已引发了很多粉丝的悲叹——电竞和游玩重临电视机无望。其实这正是这两档节目可以的真正原因所在,我们尊重的其实不是电视、不是游戏,而是需要拿到可以。不出出人意料,在网络平台复播的《游戏东西》以收视惨淡而告终结。

在2015年岁暮央视主持人的离职潮中,曾担纲“天下足球”栏目主持人的段暄也离职了。他算不上引人注目,但在广大球迷和电竞迷心中,1972年落地的他,被冠以“段暄五叔”的美名。电竞圈和游乐产业对她倍加关注,因为在这六个领域的人看来,段暄大爷的离职,似乎和其他几位央视名嘴因为家庭或收入等理由不同,用当下流行语说,他应有是对电子竞赛“有激情”,想要去实现曾经一度消失的电竞演讲梦。电竞圈、游戏圈的从业者和粉丝们寄予在段暄身上的愿景,其实来自这位二叔已经带给过她们一种强烈的可不。在重重足球名嘴中,段暄未见得最出名,但在电竞演讲这个圈子里,他却是当之无愧的首先人,至少他是最早的。

所有人的眼神纷纷瞄准电子竞赛,因为最近,电竞又火了。用段暄的话来说,如果有一天电视机上有了电竞节目,我个人觉得这是因为电视机更需要电竞,而不是电竞需要认可。

文/张书乐

原载于《人民邮电报》2016年11月8日《乐游记》专栏

图片 1

本来,段暄对这种认同的“情怀”并不遮掩。就在爆出离职音信之时,他就对传媒代表:“实际上,我精晓,《电子竞赛世界》更像一个标志,一个合法传媒确认的符号。这几年,我觉得假使央视报道了电竞,大家都会很乐意,商讨得也很霸道,好像大家过去都是‘黑户’,只要拿到国家级电视机台的报道,大家就成了‘有户籍’的人。”而这种心理,在一年后的2004年12月因节目停播戛可是止。同时因广电总局《关于不准播出电脑网络游戏类节目标公告》而被叫停的节目,还有2002年在游历卫视上开播的《游戏东西》,这档节目标观众人数高达400万。

但在我看来,或许事实应该是,经过长年累月的反驳,不再承担“精神分裂症沉迷”骂名的玩家,昔日要求认可的指望已然实现。

张书乐  新著有《越界——互联网时代必先搞懂的大捷局》