一道面试题引发的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 这个同步关键字相信大家都用得比较多,在上一篇“多个线程之间共享数据的方式”中也详细列举他的应用, ...
随机推荐
- jQuery wrap wrapAll wrapInner使用
jQuery wrap wrapAll wrapInner使用 <%@ page language="java" import="java.util.*" ...
- 在Windows下开发Node.js的C/C++原生扩展
准备工作 (1)本机系统说明:本人机器为win7 64位,32位也可以. (2)软件安装: VISUAL C++ 2010 EXPRESS(Visual Studio 2010也可以): window ...
- MAC的VIMRC
set nocompatible " 关闭 vi 兼容模式 syntax on " 自动语法高亮 " color ...
- Linux上使用shell脚本查看内存情况(超实用)
#!/bin/bashexport chknum=1 #shell搅拌存放目录(输出日志文件执行后也存于该目录)echo 3 > /wls/wls81/shellsyncwhile [ $chk ...
- 【鸡年大吉】,不知道写点啥,放个demo(小球碰撞)吧,有兴趣的看看
最初的想法是仿写win7的泡泡屏保效果,但是对于小球的斜碰问题一直没搞明白(如果你会这个,欢迎留言或者做个demo),所以只是简单处理了碰撞后的速度,有时候会看起来很搞笑~~~funny guy 话不 ...
- 自定义IHttpModule
HttpModule作用是 IIS将接收到的请求分发给相应的ISAPI处理前,先截获该请求. 通过这个我们可以完成很多额外功能. 自定义IHttpModule的例子: 通过自定义HttpModule, ...
- Salesforce使用truncate清空数据库
如果想快速的清空MySQL中的表,可以使用Truncate命令.Truncate能够快速的,对数据进行无差别的清空. 在Mysql中使用truncate的语法是TRUNCATE TABLE [Tabl ...
- 利用 UltraEdit 重新排版 XML 结构数据
我们在工作常碰到这种情况,通讯数据或文件数据是以 XML 结构形式保存的,但通常 XML 结构比较混乱,不易分析.现在我们利用 UltraEdit32对该类型数据做 Reformat,具体操作如下: ...
- Unity起步-1.1下载和安装Unity
1.1.下载和安装Unity 1.1.1 选取版本 首先找到Unity官方网站https://store.unity.com/cn,如果要下载最新版本,可以选择"立即下载".不过我 ...
- (转)java二维数组的深度学习(静态与动态)
转自:http://developer.51cto.com/art/200906/128274.htm,谢谢 初始化: 1.动态初始化:数组定义与为数组分配空间和赋值的操作分开进行:2.静态初始化:在 ...