场景实例:

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

第一轮:{’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的更多相关文章

  1. python找出字典中value最大值的几种方法

    假设定义一字典,m = {"a":3,"e":6,"b":2,"g":7,"f":7,"c ...

  2. 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 ...

  3. python_如何在列表、字典中筛选数据?

    实际问题有哪些? 过滤掉列表[3,9,-1,10.-2......] 中负数 筛选出字典{'li_ming':90,'xiao_hong':60,'li_kang':95,'bei_men':98} ...

  4. 快速找出网站中可能存在的XSS漏洞实践

    笔者写了一些XSS漏洞的挖掘过程记录下来,方便自己也方便他人. 一.背景 在本篇文章当中会一permeate生态测试系统为例,笔者此前写过一篇文章当中笔者已经讲解如何安装permeate渗透测试系统, ...

  5. 快速找出网站中可能存在的XSS漏洞实践(一)

    一.背景 笔者最近在慕课录制了一套XSS跨站漏洞 加强Web安全视频教程,课程当中有讲到XSS的挖掘方式,所以在录制课程之前需要做大量实践案例,最近视频已经录制完成,准备将这些XSS漏洞的挖掘过程记录 ...

  6. 如何快速找出Linux中的重复文件

    md5sum | sort | uniq -w32 --all-repeated=separate [1]find -not -empty -type f -printf “%s\n” :find是查 ...

  7. 如何快速找出网页中事件对应的js代码片段

    后端人员也免不了要处理一些前端的事情,由于代码不是自己写的,所以不好找到相关的代码. 比如在表单提交时,前端提交的数据不正确,这时候你可能会想在谷歌浏览器里添加一个鼠标 点击事件的断点. 然而查看js ...

  8. 迭代字典中的key和value

    字典是python中十分重要的一个内容. 今天我们来谈谈,在一个 for 循环中,能否同时迭代 key和value?当然可以咯. dict 对象的 items() 方法返回的值: >>&g ...

  9. python 根据字典中的key,value进行排序

    #coding=utf-8 import requests,json,collections,base64,datetime def sort(datas): data=json.dumps(data ...

随机推荐

  1. JavaScript Dom入门

    好像代码太杂了,博客园里跑不起来,单独复制到html中本地测试都是没有问题的. JavaScript JavaScript 是属于 web 的语言,它适用于 PC.笔记本电脑.平板电脑和移动电话. J ...

  2. IE8及其以下浏览器关于圆角表框的问题

    css部分 yuan { border: 2px solid #C0C0C0; -moz-border-radius: 50%; -webkit-border-radius: 50%; border- ...

  3. Go从三个站点中返回响应最快的

    利用协程可以轻松实现 package main import ( "fmt" "github.com/imroc/req" ) func mirroredQue ...

  4. adb 获取Android手机信息命令(1)

    @set version=1.7.2Normal @echo ============================================================= @echo I ...

  5. unity3d 打包个人记录

    证书问题Android:CreateCer.bat ztmyseabed 路径:tool/Build/Windows/Android下iOS:MacCer文件夹如何上传ipa:修改版本号version ...

  6. 聊聊ThreadLocal原理以及使用场景-JAVA 8源码

    相信很多人知道ThreadLocal是针对每个线程的,但是其中的原理相信大家不是很清楚,那咱们就一块看一下源码. 首先,我们先看看它的set方法.非常简单,从当前Thread中获取map.那么这个ge ...

  7. 基于opencv和mfc的摄像头采集代码(GOMFCTemplate2)持续更新

            编写带界面的图像处理程序,选择opencv+mfc是一种很好的选择:在读取摄像头数据方面,网上的方法很多,其中shiqiyu的camerads的方法是较好的.       基于现有资料 ...

  8. Go 语言打包静态文件

    对于 Go 语言开发者来说,在享受语言便利性的同时,最终编译的单一可执行文件也是我们所热衷的.但是,一旦遇到我们需要分发的东西不只有可执行文件的时候,事情就变得稍微有点复杂了,例如,需要分发个默认的配 ...

  9. [PHP] PHP源码常用代码中的宏定义

    PHP源码常用代码宏定义:#define 宏名 字符串#表示这是一条预处理命令,所有的预处理命令都以#开头.define是预处理命令.宏名是标识符的一种,命名规则和标识符相同.字符串可以是常数.表达式 ...

  10. 2017广东工业大学程序设计竞赛初赛 题解&源码(A,水 B,数学 C,二分 D,枚举 E,dp F,思维题 G,字符串处理 H,枚举)

    Problem A: An easy problem Description Peter Manson owned a small house in an obscure street. It was ...