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

问题举例

统计每轮都进球的球员:

第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. 【iCore4 双核心板_ARM】例程三十七:SDRAM实验——读写SDRAM

    实验现象: 上电即开始读写SDRAM测试,测试过程中,蓝色LED点亮,如果出现错误,红色LED闪烁,测试成功,绿色LED点亮. 核心代码: int main(void) { /* USER CODE ...

  2. 使用nginx搭建rtmp服务器

    一.软件需求 1.nginx源码包  下载地址:http://nginx.org/.笔者下载的是1.10.3. 2.pcre源码包.这是一个正则表达式库.nginx会用到这个开源库来做正则匹配.很多软 ...

  3. crontab命令详解

    一. Crontab 介绍 1.crontab命令的功能是在一定的时间间隔调度一些命令的执行,我理解为windows下的任务计划. 2./etc/crontab 文件 在/etc目录下有一个cront ...

  4. jqweui 关于$(document.body).infinite的bug

    jqweui,0.8.2版本infinite存在bug,会存在下拉不触发的情况,解决办法: 源代码3730行附近 Infinite.prototype.scroll = function() { va ...

  5. diff ->> acl & prefix list

    1,ACL可以用于数据层面也可以用于控制层面,prefix-list只能用于控制层面2,ACL抓的是定长掩码的子网,而prefix-list可以抓取一个前缀下的所有掩码长度即子网.比如说ACL中的pe ...

  6. GDC2017【神秘海域 4】中所使用的顶点着色器技术

    原文链接 http://game.watch.impress.co.jp/docs/news/1047802.html   会場:San Francisco Moscone Convention Ce ...

  7. Fiddler抓包手机代理配置

    参考链接:https://i.wanz.im/2013/04/30/debugging_http_request_with_fiddler/ http://www.hangge.com/blog/ca ...

  8. 【QT】QPixmap在Label中自适应大小铺满

    KeepAspectRatio:设置pixmap缩放的尺寸保持宽高比. setScaledContents:设置label的属性scaledContents,这个属性的作用是允许(禁止)label缩放 ...

  9. 基于FeignClient提供简单的用户查询服务

    前言: 由于系统升级,之前的员工数据库(mongo库)被弃用,改为用python维护的mysql库,其他系统访问通过http请求,表结构对外不可见,其他系统之前对员工mongo库的依赖要解除.每套系统 ...

  10. OSG相关扩展工程

    https://blog.csdn.net/wang15061955806/article/details/51003803 OSG的相关扩展,OSG针对每个特定应用,也有很多的开发者进行开发和完善, ...