Python-找字典中公共key-zip reduce lambda
场景实例:
西班牙足球联赛,每轮球员进球统计:
第一轮:{’1’:1,‘2’:4,‘5’:2,‘7’:3}
第一轮:{’2’:1,‘5’:4,‘6’:2,‘3’:3}
第一轮:{’1’:1,‘4’:4,‘6’:2,‘7’:3}
……
问题:统计前N轮,都进球的球员?
如何解决这个问题呢?
方法1:
#!/usr/bin/python3 from random import randint, sample def get_s(player):
# 获得三个赛季的随机记录
s1 = {k: randint(1, 6) for k in sample(player, randint(3, 6))}
s2 = {k: randint(1, 6) for k in sample(player, randint(3, 6))}
s3 = {k: randint(1, 6) for k in sample(player, randint(3, 6))}
return s1, s2, s3 def public_keys(s1, s2, s3):
# 定义中间列表
median = [] # 判断字典公共key,在s1,在s2,在s3肯定是公共key
for key in s1:
if key in s2 and key in s3:
median.append(key)
return median if __name__ == '__main__':
# 生成abcdef个球员
player = 'abcdef' # 获得3个赛季的随机数
s1, s2, s3 = get_s(player) # 获取3个赛季都进球的球员
result = public_keys(s1,s2,s3)
print(result)
方法2:
进球的球员都是数据中的key,通过求出每一轮的keys,然后做个交集就可以求出结果
#!/usr/bin/python3 from random import randint, sample def get_s(player):
# 获得三个赛季的随机记录
s1 = {k: randint(1, 6) for k in sample(player, randint(3, 6))}
s2 = {k: randint(1, 6) for k in sample(player, randint(3, 6))}
s3 = {k: randint(1, 6) for k in sample(player, randint(3, 6))}
return s1, s2, s3 def public_keys(s1, s2, s3):
# 返回各字典的单边值,并求出交集,即是结果
return s1.keys() & s2.keys() & s3.keys() if __name__ == '__main__':
# 生成abcdef个球员
player = 'abcdef' # 获得3个赛季的随机数
s1, s2, s3 = get_s(player) # 获取3个赛季都进球的球员
result = public_keys(s1, s2, s3)
print(result)
方法3:
当N轮时候,通过map和reduce函数
#!/usr/bin/python3 from random import randint, sample
from functools import reduce def get_s(player):
# 获得三个赛季的随机记录
s1 = {k: randint(1, 6) for k in sample(player, randint(3, 6))}
s2 = {k: randint(1, 6) for k in sample(player, randint(3, 6))}
s3 = {k: randint(1, 6) for k in sample(player, randint(3, 6))}
return s1, s2, s3 def public_keys(s1, s2, s3):
result = reduce(lambda a, b: a & b, map(dict.keys, [s1, s2, s3]))
# map(dict. keys,[s1,s2,s3,......N] 获得每轮的keys集合,s1……N为字典对象
# reduce((lamda a,b: a&b,map()) 把map获得的集合,依次放入a,b,返回交集
# a,b = a&b, map中取出的一个值map(dict.keys, [s1, s2, s3])取得新的列表
# reduce中的lambda只能传入两个参数
# map 为高阶函数,接收一个map(函数, [参数]),迭代参数列表,一个传入函数中处理,返回处理结果变成新的列表 return result if __name__ == '__main__':
# 生成abcdef个球员
player = 'abcdef' # 获得3个赛季的随机数
s1, s2, s3 = get_s(player) # 获取3个赛季都进球的球员
result = public_keys(s1, s2, s3)
print(result)
Python-找字典中公共key-zip reduce lambda的更多相关文章
- python_如何快速找打字典中公共key
场景实例: 西班牙足球联赛,每轮球员进球统计: 第一轮:{'1':1,'2':4,'5':2,'7':3} 第一轮:{'2':1,'5':4,'6':2,'3':3} 第一轮:{'1':1,'4':4 ...
- python 根据字典中的key,value进行排序
#coding=utf-8 import requests,json,collections,base64,datetime def sort(datas): data=json.dumps(data ...
- python 遍历字典中的键和值
#遍历字典中的所有键和值 zd1={"姓名":"张三","年龄":20,"性别":"女"} zd2= ...
- python几个特别函数map filter reduce lambda
lambda函数也叫匿名函数,即,函数没有具体的名称.先来看一个最简单例子: def f(x): return x**2 print f(4) Python中使用lambda的话,写成这样 g = l ...
- pythno学习小结-替换python字典中的key值
源: d={'a':1,'b':2,'c':3} 目标:key:'b'替换为'e' d={'a':1,'e':2,'c':3} 方法: d['e']=d.pop('b')
- python判断字典中key是否存在
例:#生成一个字典d = {'title':'abc','age':18} if 'title' in d.keys(): print('存在')else: print('不存在') if 'titl ...
- 替换python字典中的key值
- 迭代字典中的key和value
字典是python中十分重要的一个内容. 今天我们来谈谈,在一个 for 循环中,能否同时迭代 key和value?当然可以咯. dict 对象的 items() 方法返回的值: >>&g ...
- python 对字典分别按照key值、value值进行排序
1.sorted函数首先介绍sorted函数,sorted(iterable,key,reverse),sorted一共有iterable,key,reverse这三个参数. 其中iterable表示 ...
随机推荐
- 百度支持链接的nofollow属性吗
http://www.wocaoseo.com/thread-269-1-1.html 简单明确的一个问题,百度目前支持链接的nofollow属性吗?rel='external nofollow' 复 ...
- 贝塞尔曲线(B-spline)的原理与应用
什么是贝塞尔曲线? 贝塞尔曲线(Bézier curve),又称贝兹曲线或贝济埃曲线,是应用于二维图形应用程序的数学曲线. 来源 贝塞尔曲线于1962,由法国工程师皮埃尔·贝塞尔(Pierre Béz ...
- js中使用const声明变量时需要注意
const实际上保证的,并不是变量的值不得改动,而是变量指向的那个内存地址(初始化的内容)不得改动.对于简单类型的数据(数值.字符串.布尔值),值就保存在变量指向的那个内存地址,因此等同于常量. 简单 ...
- android开发之splash闪屏页判断是否第一次进入app代码
package com.david.david.zhankudemo.activity; import android.app.Activity; import android.content.Con ...
- Unity添加自定义拓展方法
Shepherdog|2014-04-08 10:50|16151次浏览|Unity(373)0 通常你会发现你不能修改正在使用的那些类,无论它是基础的数据类型还是已有框架的一部分,它提供的方法让你困 ...
- 【python】迭代器与生成器到底是什么?看完你就知道
迭代器跟生成器,与上篇文章讲的装饰器一样,都是属于我的一个老大难问题. 通常就是遇到的时候就去搜一下,结果在一大坨各种介绍博客中看了看,回头又忘记了. 你是不是也是这样呢? 俗话说:好记性不如烂笔头, ...
- 基于django快速开发一个网站(一)
基于django快速开发一个网站(一) * 创建虚拟环境.基于虚拟环境创建django==2.0.0和图片加载库和mysql数据库驱动 1. 创建目录并创建虚拟环境 ╰$ mkdir Cornuco ...
- 《Offer一箩筐》求职之前你必须知道的 4 件事!!
「MoreThanJava」 宣扬的是 「学习,不止 CODE」. 如果觉得 「不错」 的朋友,欢迎 「关注 + 留言 + 分享」,文末有完整的获取链接,您的支持是我前进的最大的动力! Hi~ 这里是 ...
- pyqt 设置QTabWidget标签页不可选
pyqt 设置QTabWidget标签页不可选 for i in range(1,7): self.tabWidget.setTabEnabled(i,False)i-对应标签页的位数
- 小白也能弄懂的目标检测YOLO系列之YOLOV1 - 第二期
上期给大家展示了用VisDrone数据集训练pytorch版YOLOV3模型的效果,介绍了什么是目标检测.目标检测目前比较流行的检测算法和效果比较以及YOLO的进化史,这期我们来讲解YOLO最原始V1 ...