如何快速找到多个字典中的公共键

问题举例

统计每轮都进球的球员:

第1轮{‘tom’:1, 'meixi':2}

第2轮{‘coco’:3, 'meixi':4, 'marton':2}

第3轮{'coco':2, 'meixi':1, 'david':1}

for循环、列表解析和set交集

from random import randint, sample
d1 = {k: randint(1, 5) for k in sample('abcdefg', randint(3, 6))}
d2 = {k: randint(1, 5) for k in sample('abcdefg', randint(3, 6))}
d3 = {k: randint(1, 5) for k in sample('abcdefg', randint(3, 6))}
print(d1, d2, d3) print("\n(1)for loop")
res1 = []
for key in d1:
if key in d2 and key in d3:
res1.append(key)
print(res1) print("\n(2)list comprehension")
res = [k for k in d1 if k in d2 and k in d3]
print(res) print("\n(3)set intersection")
s1 = d1.keys()
s2 = d2.keys()
s3 = d3.keys()
res3 = s1 & s2 & s3
print(res3)

分析:在实际场景中我们并不知道有几轮,我们需要更通用的一种方法

我们把字典放在列表中,这里仅以三个字典为例,当然列表中可以放n个字典

通用方法(两种)

from random import randint, sample
from functools import reduce
d1 = {k: randint(1, 5) for k in sample('abcdefg', randint(3, 6))}
d2 = {k: randint(1, 5) for k in sample('abcdefg', randint(3, 6))}
d3 = {k: randint(1, 5) for k in sample('abcdefg', randint(3, 6))}
print(d1, d2, d3) d_list = [d1, d2, d3]
print("\nsolution1:")
res1 = [k for k in d_list[0] if all(map(lambda d: k in d, d_list[1:]))]
print(res1) print("\nsolution2:")
res2 = reduce(lambda a, b: a & b, map(dict.keys, d_list))
print(res2)

参考资料:python3实用编程技巧进阶

python数据结构-如何快速找到多个字典中的公共键的更多相关文章

  1. 5、如何快速找到多个字典中的公共键(key) 6 如何让字典保持有序 7 如何实现用户的历史记录功能(最多n条)

    5.如何快速找到多个字典中的公共键(key) from random import randint,sample #随机取数 # a = sample("ABCDEF",randi ...

  2. 问题5:如何快速找到多个字典中的公共键(key)

    方法一:for in循环 from random import randint, sample a1 = {k; randint(1, 4) for k in 'abcdefg'} a2 = {k; ...

  3. 如何快速找到多个字典中的公共键(key)

    from random import randint, sample #sample随机取样 d1 = {k: randint(1, 4) for k in sample('abcdefgh', ra ...

  4. 如何快速查找到多个字典中的公共键(Key)---Python数据结构与算法相关问题与解决技巧

    如何快速查找到多个字典中的公共键(Key)-?   实际案例: 西班牙足球甲级联赛,每轮球员进球统计: 第1轮: { '苏亚雷斯':1,'梅西':2,'本泽马':1,...} 第2轮: { '苏亚雷斯 ...

  5. Python强化训练笔记(五)——找出多个字典中的公共键

    在这个问题中,我们期望得到的结果是找到这三轮比赛中,每轮都进球的球员都有谁.下面用python来模拟一下,先生成一批数据: >>> from random import randin ...

  6. python实例:快速找出多个字典中的公共键

    1.生成随机字典 # 从abcdefg 中随机取出 3-6个,作为key, 1-4 的随机数作为 value s1 = {x : randint(1, 4) for x in sample('abcd ...

  7. Python数据结构之列表、元组及字典

    一位大牛Niklaus Wirth曾有一本书,名为<Algorithms+Data Structures=Programs>,翻译过来也就是算法+数据结构=程序.而本文就是介绍一下Pyth ...

  8. Python数据结构:列表、元组和字典

    在Python中有三种内建的数据结构——列表list.元组tuple和字典dict 列表中的项目包括在方括号中,项目之间用逗号分割 元组和列表十分类似,只不过元组和字符串一样是不可变的 即你不能修改元 ...

  9. 【python cookbook】【数据结构与算法】17.从字典中提取子集

    问题:想创建一个字典,其本身是另一个字典的子集 解决方案:利用字典推导式(dictionary comprehension)可轻松解决 # example of extracting a subset ...

随机推荐

  1. C语言 · FBI树

    算法训练 FBI树   时间限制:1.0s   内存限制:256.0MB        锦囊1 二叉树. 问题描述 我们可以把由“0”和“1”组成的字符串分为三类:全“0”串称为B串,全“1”串称为I ...

  2. WOW.js和animate.css让页面滚动时显示动画

    官网:http://mynameismatthieu.com/WOW/ bootstrap CDN服务:http://www.bootcdn.cn/wow/ 1.wow.js 实现了在网页滚动时的动画 ...

  3. 使用MegaCli监控Linux硬盘

    1.首先查看机器是否使用的是MegaRAID卡 dmesg | grep RAID [ 6.932741] scsi host0: Avago SAS based MegaRAID driver 2. ...

  4. iOS开发之--Masonry多个平均布局

    使用Masonry平均布局,代码如下: 1.创建 // 图片组数 NSArray *imgAry = @[@"home_icon01",@"home_icon02&quo ...

  5. monit介绍和配置

    1.介绍 monit监控和管理进程.程序.文件.目录和Unix系统的文件的工具.可以进行自动维护和修理,在错误的情况下执行有意义的因果关系的行动.比如,某个进程没有运行启动它:没有响应重启它:占用太多 ...

  6. How not to alienate your reviewers, aka writing a decent rebuttal?

    [forwarded from https://nebelwelt.net/blog/20180704-rebuttal.html] Assuming you have given everythin ...

  7. 三维计算机视觉 — 中层次视觉 — Point Pair Feature

    机器人视觉中有一项重要人物就是从场景中提取物体的位置,姿态.图像处理算法借助Deep Learning 的东风已经在图像的物体标记领域耍的飞起了.而从三维场景中提取物体还有待研究.目前已有的思路是先提 ...

  8. 如何使用LinkedHashMap来实现一个LruCache

    最近在看mybatis的源代码,发现了mybatis中实现的LruCache使用到了LinkedHashMap,所以就探究了一下LinkedHashMap是如何支持Lru缓存的 LinkedHashM ...

  9. 茶馆小人书 (AFO)

    茶馆小人书 ——AFO ​ 乌云重重地压住了整个天际,阴风凛冽袭人,随着远方穹顶上的几声闷响,豆大的雨点便开始清洗这座城市.北方的雨,就是这么突然.任性,恰似北方人的性情,豪放不羁,一旦开始便不可收拾 ...

  10. Tomcat中的Listener源码片段解读

    @Override public <T extends EventListener> void addListener(T t) { if (!context.getState().equ ...