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

问题举例

统计每轮都进球的球员:

第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. HMACSHA1 加密算法

    https://blog.csdn.net/z69183787/article/details/78393216 ******************************************* ...

  2. ROS工作空间和程序包创建

    预备工作后面操作中我们将会用到ros-tutorials程序包,请先安装: $ sudo apt-get install ros-<distro>-ros-tutorials 将 < ...

  3. idea中git颜色不显示或者文件右键没有git按钮解决方法

    VCS--->Enable Version Control Integration,然后选择git就可以了

  4. C# 移除Response Header,403调整返回为404Make IIS return a 404 status code instead of 403

    Server Information Revealed For the benefit of those who land here through a google/bing search:: He ...

  5. 解决ubuntu下音乐播放器Rhythmbox乱码问题

    两种解决方法 第一种是修改用户的环境变量 1.先打开主文件夹 cd /home/user #user是你的用户名然后编辑用户环境 2.sudo gedit .profile在打开的文件中添加: exp ...

  6. 9. Oracle DataGuard的介绍

    一. Oracle DataGuard简介 Oracle DataGuard:简称DG.是由一个Primary Database(主库)和一个或者多个Standby Database(备库)组成.对O ...

  7. gcc编译c语言程序

    编译:当前源代码编译成二进制目标文件(.obj文件) 链接(link):将生成的.obj文件与库文件.lib等文件链接,生成可执行文件(.exe文件).   一个现代编译器的主要工作流程如下: 源程序 ...

  8. 微信&支付宝 支付单文件操作

    https://github.com/dedemao/weixinPay https://github.com/dedemao/alipay https://www.dedemao.com/alipa ...

  9. 【Zookeeper系列】zookeeper面试题(转)

    原文链接:https://segmentfault.com/a/1190000014479433 1.ZooKeeper是什么? ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务,是 ...

  10. [原][openstack-pike][controller node][issue-2][glance] Could not parse rfc1738 URL from string 'mysql+pymysql=http://glance:glance@controller/glance'

    问题点 在手动上传镜像的时候:出现错误 Could not parse rfc1738 URL from string 'mysql+pymysql=http://glance:glance@cont ...