返回顶部
首页 > 资讯 > 后端开发 > Python >Python怎么查找多个字典公共键key
  • 811
分享到

Python怎么查找多个字典公共键key

2023-06-30 11:06:52 811人浏览 八月长安

Python 官方文档:入门教程 => 点击学习

摘要

今天小编给大家分享一下python怎么查找多个字典公共键key的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。1、如何快速找到

今天小编给大家分享一下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, samplea1 = {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, samplea1 = {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, samplefrom functools import reducea1 = {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频道。

--结束END--

本文标题: Python怎么查找多个字典公共键key

本文链接: https://lsjlt.com/news/328426.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作