python_如何快速找打字典中公共key
场景实例:
西班牙足球联赛,每轮球员进球统计:
第一轮:{’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的更多相关文章
- python找出字典中value最大值的几种方法
假设定义一字典,m = {"a":3,"e":6,"b":2,"g":7,"f":7,"c ...
- 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 ...
- python_如何在列表、字典中筛选数据?
实际问题有哪些? 过滤掉列表[3,9,-1,10.-2......] 中负数 筛选出字典{'li_ming':90,'xiao_hong':60,'li_kang':95,'bei_men':98} ...
- 快速找出网站中可能存在的XSS漏洞实践
笔者写了一些XSS漏洞的挖掘过程记录下来,方便自己也方便他人. 一.背景 在本篇文章当中会一permeate生态测试系统为例,笔者此前写过一篇文章当中笔者已经讲解如何安装permeate渗透测试系统, ...
- 快速找出网站中可能存在的XSS漏洞实践(一)
一.背景 笔者最近在慕课录制了一套XSS跨站漏洞 加强Web安全视频教程,课程当中有讲到XSS的挖掘方式,所以在录制课程之前需要做大量实践案例,最近视频已经录制完成,准备将这些XSS漏洞的挖掘过程记录 ...
- 如何快速找出Linux中的重复文件
md5sum | sort | uniq -w32 --all-repeated=separate [1]find -not -empty -type f -printf “%s\n” :find是查 ...
- 如何快速找出网页中事件对应的js代码片段
后端人员也免不了要处理一些前端的事情,由于代码不是自己写的,所以不好找到相关的代码. 比如在表单提交时,前端提交的数据不正确,这时候你可能会想在谷歌浏览器里添加一个鼠标 点击事件的断点. 然而查看js ...
- 迭代字典中的key和value
字典是python中十分重要的一个内容. 今天我们来谈谈,在一个 for 循环中,能否同时迭代 key和value?当然可以咯. dict 对象的 items() 方法返回的值: >>&g ...
- python 根据字典中的key,value进行排序
#coding=utf-8 import requests,json,collections,base64,datetime def sort(datas): data=json.dumps(data ...
随机推荐
- 【Java框架型项目从入门到装逼】第八节 - 用EasyUI绘制主界面
1.引入资源包 在上一节中,我们把基本的框架都搭好了,用了Spring,SPringMVC.这一节,我们先来画页面,前端框架采用EasyUI来实现. easyui是一种基于jQuery的用户界面插件集 ...
- Android 根据字符串动态获取资源ID
1.常用方法public int getResId(String name,Context context){ Resources r = context.getResources(); int id ...
- flask-form用户登录与注册
用户登录 #!/usr/bin/env python # -*- coding:utf- -*- from flask import Flask, render_template, request, ...
- Core Animation文档翻译 (第一篇)
Core Animation 文档翻译(第一篇) 前言 作为iOS 开发,官方文档的阅读是很有必要的,值此周末便写下此文.作为iOS 实际经验3年的开发,之前有阅读并实践过经典的<iOS核心动画 ...
- webpack自定义打包命令
更快捷的执行打包任务 1.执行类似于node_modules/.bin/webpack这样的命令其实是比较烦人且容易出错的,不过值得庆幸的是npm可以引导任务执行, 对其进行配置后可以使用简单的npm ...
- Django之路由分发系统
web的基本工作流程 首先,我们先来思考一下我们平常在上网浏览网页时候的场景,大致就是打开一个web浏览器,输入某一个网站的地址,然后转到该网址,在浏览器中得到该网址的页面.从这个场景中我们可以抽象出 ...
- Python模块之信号学习(signal)
信号概述 在学习Python前应该学习下Linux下的信号,软中断信号(signal,又简称为信号)用来通知进程发生了异步事件.进程之间可以互相通过系统调用kill发送软中断信号.内核也可以因为内部事 ...
- Sql的基础知识(一)
一.基础 1.说明:创建数据库 CREATE DATABASE database-name 2.说明:删除数据库 drop database dbname 3.说明:备份 sql server --- ...
- Python 操作 GA API 指南
因为需要写一个 Blog Feature 的缘故,所以接触了下 GA 的 Python API,发现 G 家的 API 不是那么直观,比较绕,但是,在使用过程中发现其实 G 家的 API 设计挺有意思 ...
- BZOJ:1185: [HNOI2007]最小矩形覆盖
1185: [HNOI2007]最小矩形覆盖 这计算几何……果然很烦…… 发现自己不会旋转卡壳,补了下,然后发现求凸包也不会…… 凸包:找一个最左下的点,其他点按照与它连边的夹角排序,然后维护一个栈用 ...