一道面试题引发的pythonic
[本文出自天外归云的博客园]
今天一个朋友去面试,下面是一道测试工程师面试题(来自搜狗):

自己写了解法:
# -*- coding: utf-8 -*-
import re def filter_log(target,the_log):
r = '['+target+']'
target_dic = {}
for one in target:
target_dic[one] = 0
for one in re.findall(r, the_log):
target_dic[one] += 1
return min(target_dic.items(), key=lambda x: x[1])[1] if __name__ == '__main__':
the_log = "CRIUCEXPLORESGOUIUSCRIUdSCdRIdUdddS"
target = "CRIUS"
print filter_log(target,the_log)
写了解法以后感觉到没有显现出python的优势,找大师兄学了一些pythonic的写法,比如将一个列表创建成字典有以下两种写法可以一行搞定(初始化每个key的value为0):
#target_dic = {one:0 for one in list}
#target_dic = dict.fromkeys(list, 0)
例如min()可以根据key也可以不用,不用key的话语句就会更短一些:
import re,collections the_log = "CRIUCEXPLORESGOUIUSCRIUdSCdRIdUdddS"
target = "CRIUS"
print min(collections.Counter(re.findall('['+target+']', the_log)).items(), key=lambda x: x[1])[1]
#print min(collections.Counter(re.findall('['+target+']', the_log)).values())
如果测试字符串“CRIUCEXPLORESGOUIUSCRIUdSCdRIdUdddS”自备的话,两行搞定:
import re,collections
print min(collections.Counter(re.findall('[CRIUS]', raw_input("Input:"))).values())
原来还有import内置函数!现在就一行了:
print min(__import__('collections').Counter(__import__('re').findall('[CRIUS]', raw_input("Input:"))).values())
是不是特别好玩!O(∩_∩)O哈哈哈~
一道面试题引发的pythonic的更多相关文章
- 一道面试题引发的对 Java 内存模型的一点疑问
一道面试题引发的对Java内存模型的一点疑问 问题描述 如上图所示程序,按道理,子线程会通过 num++ 操作破坏 while 循环的条件,从而终止循环,执行最后的输出操作.但在我的多次运行中,偶尔会 ...
- 【死磕JVM】一道面试题引发的“栈帧”!!!
前言 最近小农的朋友--小勇在找工作,开年来金三银四,都想跳一跳,找个踏(gao)实(xin)点的工作,这不小勇也去面试了,不得不说,现在面试,各种底层各种原理,层出不穷,小勇就遇上了这么一道面试题, ...
- (转)c++类的成员函数存储方式(是否属于类的对象)---一道面试题引发的思考
昨天去面试一家公司,面试题中有一个题,自己没弄清楚,先记录如下: class D { public: void printA() { cout<<"printA"< ...
- 一道面试题引发的思考(C#值类型和引用类型)
某年某月,笔者去面试招行的一个外包项目,辗转来到面试地点以后,面试官给了我一份试卷,试卷只有两道题目,其中一道是这样的: 阅读以下程序 class Program { struct Point { p ...
- 一道面试题引发的对javascript类型转换的思考
最近群里有人发了下面这题:实现一个函数,运算结果可以满足如下预期结果: add(1)(2) // 3 add(1, 2, 3)(10) // 16 add(1)(2)(3)(4)(5) // 15 对 ...
- 一道面试题引发对javascript事件循环机制(Event Loop)的 思考(这里讨论针对浏览器)
- PHP递归创建多级目录(一道面试题的解题过程)
今天看到一道面试题,要写出一个可以创建多级目录的函数: 我的第一个感觉就是用递归创建,具体思路如下: function Directory($dir){ if(is_dir($dir) || @mkd ...
- 关于Java类加载双亲委派机制的思考(附一道面试题)
预定义类加载器和双亲委派机制 JVM预定义的三种类型类加载器: 启动(Bootstrap)类加载器:是用本地代码实现的类装入器,它负责将 <Java_Runtime_Home>/lib下面 ...
- 一道面试题比较synchronized和读写锁
一.科普定义 这篇博文的两个主角“synchronized”和“读写锁” 1)synchronized 这个同步关键字相信大家都用得比较多,在上一篇“多个线程之间共享数据的方式”中也详细列举他的应用, ...
随机推荐
- PHP中的date函数中时区问题
从php5.1.0开始,php.ini里加入了date.timezone这个选项,默认情况下是关闭的,也就是显示的时间(无论用什么php命令)都是格林威治标准时间,所以才会有这个情况发生 解决方法如下 ...
- 采用FirePHP调试PHP程序
采用FirePHP调试PHP程序 FirePHP是什么? FirePHP是一个利用Firebug console栏输出调试信息方便程序调试.这一切只需要调用几个简单的函数. 他看起来是怎么个样子? 1 ...
- 笔记:Ubuntu 上的Testlink 部署
1.安装apache2 sudo apt-get install apache2 2. sudo /etc/init.d/apache2 restart 测试: Http:\localhost or ...
- opp(Object Oriented Programming)
嗯,昨天忙了一天没来及发,过年啊,打扫啊,什么搽窗户啊,拖地啊,整理柜子啊,什么乱七八糟的都有,就是一个字,忙. 好了,废话也不多说,把自己学到的放上来吧.嗯,说什么好呢,就说原型链啊 原型对象 每个 ...
- [css]《css揭秘》学习(三)-灵活的背景定位
一.background-position属性 使用该属性,在不确定容器大小的情况下,也可以指定图案距离容器边缘的位置:但是需要为不支持该属性的浏览器指定回退方案,否则,图案会默认放在左上角. < ...
- Dynamics CRM 2015-Auto Save
Auto Save,顾名思义,就是不需要明确地点击Save按钮,自动保存.这个功能在创建CRM Organization的时候,默认是开启的. 需要注意的是: 1. Auto Save适用于Main ...
- Android jni 编程4(对基本类型二维整型数组的操作)
Android jni 编程 对于整型二维数组操作: 类型一:传入二维整型数组,返回一个整型值 类型二:传入二维整型数组,返回一个二维整型数组 声明方法: private native int Sum ...
- [Bullet3]三种碰撞检测及实现
官方文档:http://bulletphysics.org 开源代码:https://github.com/bulletphysics/bullet3/releases API文档:http://bu ...
- ImageSpan图片不能居中的问题
点击下载:MyImageSpan.txt 使用ImageSpan的童鞋应该都会遇到这样一个困惑,图片不能居中显示,ImageSpan中只有ImageSpan.ALIGN_BASELINE与ImageS ...
- jQuery_第三章_工厂函数