当前位置:
首页 > Python基础教程 >
-
Python查找多个字典公共键key的方法
这篇文章主要介绍了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内容请搜索以前的文章或继续浏览下面的相关文章希望大家以后多多支持!
原文链接:https://xiaokang.blog.csdn.net/article/details/124437132
栏目列表
最新更新
求1000阶乘的结果末尾有多少个0
详解MyBatis延迟加载是如何实现的
IDEA 控制台中文乱码4种解决方案
SpringBoot中版本兼容性处理的实现示例
Spring的IOC解决程序耦合的实现
详解Spring多数据源如何切换
Java报错:UnsupportedOperationException in Col
使用Spring Batch实现批处理任务的详细教程
java中怎么将多个音频文件拼接合成一个
SpringBoot整合ES多个精确值查询 terms功能实
SQL Server 中的数据类型隐式转换问题
SQL Server中T-SQL 数据类型转换详解
sqlserver 数据类型转换小实验
SQL Server数据类型转换方法
SQL Server 2017无法连接到服务器的问题解决
SQLServer地址搜索性能优化
Sql Server查询性能优化之不可小觑的书签查
SQL Server数据库的高性能优化经验总结
SQL SERVER性能优化综述(很好的总结,不要错
开启SQLSERVER数据库缓存依赖优化网站性能
uniapp/H5 获取手机桌面壁纸 (静态壁纸)
[前端] DNS解析与优化
为什么在js中需要添加addEventListener()?
JS模块化系统
js通过Object.defineProperty() 定义和控制对象
这是目前我见过最好的跨域解决方案!
减少回流与重绘
减少回流与重绘
如何使用KrpanoToolJS在浏览器切图
performance.now() 与 Date.now() 对比