Python查找多个字典公共键key的方法

 更新时间:2022年04月29日 11:29:47   作者:AllardZhao  
这篇文章主要介绍了Python查找多个字典公共键key案例,文章主要通过案例分享展开详细的内容介绍,具有一定的参考价值,需要的小伙伴可以参考一下

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

实际案例:

西班牙足球甲级联赛,每轮球员进球统计:

  • 第一轮:{'苏亚雷斯': 1, '梅西': 2, '本泽马': 1, 'C罗': 3, ...}
  • 第二轮:{'苏亚雷斯': 2, 'C罗': 1, '格里丝曼': 2, '贝尔': 1, ...}
  • 第三轮:{'苏亚雷斯': 1, '托雷斯': 2, '贝尔': 1, '内马尔': 1, ...}

 统计出前N轮,每场比赛都有进球的球员。

注:公共键就是在每个字典中都出现的键。

解决方案:

利用集合(set)的交集操作

  • Step1:使用字典的keys()方法,得到一个字典keys的集合;
  • Step2:使用map函数,得到所有字典的keys的集合;
  • Step3:使用reduce函数,取所有字典的keys集合的交集。

2、代码演示

from random import randint, sample 
# 随机取样进球球员信息
print(sample('abcdef', randint(3, 6)))
# 字典解析产生每轮数据
s1 = {x: randint(1, 4) for x in sample('abcdef', randint(3, 6))}
s2 = {x: randint(1, 4) for x in sample('abcdef', randint(3, 6))}
s3 = {x: randint(1, 4) for x in sample('abcdef', randint(3, 6))}
print(s1, s2, s3)
# 方法1:
# 迭代第1轮中键,之后再去判断这个key是否在s2和s3当中,如果在就表示这个键是公共键
res = []
for k in s1:
    if k in s2 and k in s3:
        res.append(k)
print(res)
 
# 方法2:
# 获取每一个字典中的所有key,python2为viewkeys()
print(s1.keys(), s2.keys(), s3.keys())
# 取所有集合的&交集,就是公共键
print(s1.keys() & s2.keys() & s3.keys())
 
# 方法3:
# 使用map得到每一轮的keys集合
print(list(map(dict.keys, [s1, s2, s3])))
 
from functools import reduce
# 使用reduce函数,取每一轮的keys集合的交集
print(reduce(lambda a, b: a & b, map(dict.keys, [s1, s2, s3])))

3、快速找到多个字典中的公共键(key)的方法(补充)

方法一:for in循环

from random import randint, sample
a1 = {k: randint(1, 4) for k in 'abcdefg'}
a2 = {k: randint(1, 4) for k in 'abc123456789'}
a3 = {k: randint(1, 4) for k in 'abcinubububu'}
a4 = {k: randint(1, 4) for k in 'abc89898989'}
r = []
for x in a1:
    if x in a2 and x in a3 and x in a4:
        r.append(x)
print(r)
randint(1, 4)  # 从1~4间随机取一个数

方法二:利用集合的交集操作

from random import randint, sample
a1 = {k: randint(1, 4) for k in 'abcdefg'}
a2 = {k: randint(1, 4) for k in 'abcdefg'}
a3 = {k: randint(1, 4) for k in 'abcdefg'}
a4 = {k: randint(1, 4) for k in 'abcdefg'}
a = a1.keys() & a2.keys() & a3.keys() & a4.keys()
print(a)

a1.keys():得到a1字典的key,一set格式;
a1.keys() & a2.keys() & a3.keys() & a4.keys():取4个集合的公共元素;
a为一个集合(set)

方法三:使用map即reduce(用于求n个字典的公共key)

from random import randint, sample
from functools import reduce
a1 = {k: randint(1, 4) for k in 'abcdefg'}
a2 = {k: randint(1, 4) for k in 'abcdefg'}
a3 = {k: randint(1, 4) for k in 'abcdefg'}
a4 = {k: randint(1, 4) for k in 'abcdefg'}
b1 = map(dict.keys, [a1, a2, a3, a4])
b2 = reduce(lambda a ,b: a & b, b1)
print(b2)
b1 = map(dict.keys, [a1, a2, a3, a4])  #以集合形式取每个字典的keys;

到此这篇关于Python查找多个字典公共键key的方法的文章就介绍到这了,更多相关Python查找key内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Python基于identicon库创建类似Github上用的头像功能

    Python基于identicon库创建类似Github上用的头像功能

    这篇文章主要介绍了Python基于identicon库创建类似Github上用的头像功能,结合具体实例形式分析了identicon库操作图形的具体步骤与相关使用技巧,需要的朋友可以参考下
    2017-09-09
  • 横向对比分析Python解析XML的四种方式

    横向对比分析Python解析XML的四种方式

    这篇文章主要以横向对比方式分析Python解析XML的四种方式,感兴趣的小伙伴们可以参考一下
    2016-03-03
  • python入门jupyter基础操作及文本用法

    python入门jupyter基础操作及文本用法

    这篇文章主要介绍了python入门-jupyter基础操作及文本用法,适合入门的python小白阅读,有需要的朋友可以借鉴参考下,希望可以有所帮助,感谢阅读
    2021-09-09
  • Django项目实战之用户头像上传与访问的示例

    Django项目实战之用户头像上传与访问的示例

    这篇文章主要介绍了Django项目实战之用户头像上传与访问的示例,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-04-04
  • Python机器学习之基于Pytorch实现猫狗分类

    Python机器学习之基于Pytorch实现猫狗分类

    看了许多关于PyTorch的入门文章,大抵是从torchvision.datasets中自带的数据集进行训练,导致很难把PyTorch运用于自己的数据集上,真正地灵活运用PyTorch,本文详细介绍了怎么利用Pytorch实现猫狗分类,需要的朋友可以参考下
    2021-06-06
  • Python使用matplotlib绘制图形大全(曲线图、条形图、饼图等)

    Python使用matplotlib绘制图形大全(曲线图、条形图、饼图等)

    matplotlib 是一个用于创建静态、动态和交互式可视化图形的 Python 库,它被广泛用于数据可视化,并且可以与多种操作系统和图形后端一起工作,本文给大家介绍了Python使用matplotlib绘制图形大全,需要的朋友可以参考下
    2024-06-06
  • Python 3.8 新功能来一波(大部分人都不知道)

    Python 3.8 新功能来一波(大部分人都不知道)

    Python 3.8 是Python语言的最新版本,它适合用于编写脚本、自动化以及机器学习和Web开发等各种任务。这篇文章主要介绍了Python 3.8 新功能(大部分人都不知道),需要的朋友可以参考下
    2020-03-03
  • Python闭包函数定义与用法分析

    Python闭包函数定义与用法分析

    这篇文章主要介绍了Python闭包函数定义与用法,结合实例形式分析了Python闭包函数的功能、定义、使用方法及相关操作注意事项,需要的朋友可以参考下
    2018-07-07
  • Python学习之面向函数转面向对象详解

    Python学习之面向函数转面向对象详解

    本文将针对类进行一个综合练习,利用所学的面向对象编程、类的知识将我们之前做的面向函数编写的学生信息库重构为面向对象的方式,感兴趣的可以了解一下
    2022-03-03
  • 关于Python的GPU编程实例近邻表计算的讲解

    关于Python的GPU编程实例近邻表计算的讲解

    本文主要讲解了Python的GPU编程实例近邻表计算,通过一个近邻表计算的案例,给出了适用于GPU加速的计算场景。需要了解的朋友可以参考一下这篇文章
    2021-08-08

最新评论