您可以避免生成dict.keys()(在python2.x中)生成的中间列表:result = [d[key] for key in d if key.startswith(query)]

但是您很可能希望使用trie而不是字典,这样您就可以找到与具有公共前缀的键相关联的所有值(trie类似于基于前缀的树)。在

Here您可以找到一些不同的尝试实现。在

A trie for keys "A", "to", "tea", "ted", "ten", "i", "in", and "inn". (source wikipedia)

让我们比较一下不同解决方案的时间安排:

^{pr2}$

# dict without keys()

%timeit [d[s] for s in d if s.startswith(query)]

100 loops, best of 3: 7.83 ms per loop

# 11.72% improvement# PyTrie (https://pypi.python.org/pypi/PyTrie/0.2)

import pytrie

pt = pytrie.Trie(d)

%timeit [pt[s] for s in pt.iterkeys(query)]

1000 loops, best of 3: 320 µs per loop

# 96.36% improvement# datrie (https://pypi.python.org/pypi/datrie/0.7)

import datrie

dt = datrie.Trie('0123456789')

for key, val in d.iteritems():

dt[unicode(key)] = val

%timeit [dt[s] for s in dt.keys(unicode(query))]

10000 loops, best of 3: 162 µs per loop

# 98.17% improvement

python关键字以什么开头_查找关键字以相同前缀开头的字典值的更有效方法相关推荐

  1. python 提高文件搜索效率_查找目标文件太慢了,用好搜索引擎,让你比Python找资源更快捷...

    很多人听到Python编程语言时,都是它大名鼎鼎的"网络爬虫"名号,一个厉害的Python高手,可以在互联网中找到很多他需要的资源数据.其实Python的"爬虫" ...

  2. python画两条曲线_查找在matplotlib中绘制的两条曲线之间的区域(在区域之间填充)...

    我有两条曲线的x和y值列表,它们都有奇怪的形状,而且我没有任何函数.我需要做两件事:(1)绘制它并对曲线之间的区域进行着色,如下图所示:(2)找到曲线之间该着色区域的总面积. 在matplotlib中 ...

  3. python统计列表中重复_查找统计python列表中的重复元素

    如何快速的统计出那些是重复的呢? 形如aa=[1,2,2,3,2,4]的一个list,其中有重复元素,由于集合中重复元素无意义,所以 bb=list(set(aa))可很容易得到去除重复的列表[1,2 ...

  4. python画简易动物画法_查找「画小动物最简单画法」安卓应用 - 豌豆荚

    288.1万人安装 专属宝宝的动物园开放咯~快来陪小动物玩耍吧!在玩耍中认识他们,和他们交朋友并了解它们!让宝宝成为人人夸赞的动物小专家! [超多小动物]:来自世界各地的小动物们共同生活在宝宝巴士的动 ...

  5. mysql替换开头_如何在MySQL的字符串开头搜索和替换特定字符?

    为此,您可以使用INSERT().让我们首先创建一个表-mysql> create table DemoTable -> ( -> ZipCode varchar(200) -> ...

  6. python提交表单无效_使用Django Form解决表单数据无法动态刷新的两种方法

    一.无法动态更新数据的实例 1. 如下,数据库中创建了班级表和教师表,两张表的对应关系为"多对多" from django.db import models class Class ...

  7. python合并两个属性_合并两个部分包含文件列表及其属性的最有效方法

    我有一个系统,该系统运行带有ls或dir命令的变体的自定义cli,并返回工作目录中文件和文件夹的列表. 问题是,我可以使用带标志的命令运行命令,该标志返回文件及其时间戳(创建和最后修改的日期),或者返 ...

  8. base-64 字符串中的无效字符。_查找字符串中连续不重复最长字符串和长度的方法...

    1.思路 2.结果 字符串:abacbefkb 开始遍历: 链表的变化情况: a:长度:1 链表:[a] b:长度:2 链表:[a,b] a:长度:2 链表:[b,a] c:长度:3 链表:[b,a, ...

  9. 果园机器人作文开头_易学好用的万能开头—热点事件引入式

    作文写作一直是小伙伴们老大难的问题,大白通过近四年的教学发现,提高申论作文写作能力的捷径,就是毫米级的模仿练习.什么是毫米级的模仿练习?请戳下方链接 通往作文高手的捷径:看"小明" ...

最新文章

  1. Kooboo CMS - Html.FrontHtml.Position 详解
  2. Spring-Retry重试实现原理
  3. c#中去掉字符串空格方法
  4. mysql瓶颈分析_网站瓶颈分析—MYSQL性能分析
  5. 我看到东边的阳光就这样照进车窗
  6. Win03+IIS6 部署.NetFramework4(ASP.NET4)的一点小经验
  7. [转载] [转载] numpy功能快速查找
  8. FFmpeg获取H264文件的帧率
  9. Rhino(犀牛)的视口
  10. 马化腾的马氏建议:“小步快跑 快速迭代”
  11. 微信公众平台测试号的申请与使用
  12. Rabbitmq 安全账号管理方案
  13. AirtestIDE1.2.13的安卓手机设置自动初始化功能
  14. Windows光盘映像刻录机设置---Windows资源管理器
  15. 编写shell脚本,输入一个数字n并计算1~n的和。要求:输入的数字不能小于1和空。
  16. 【笨木头Lua专栏】基础补充05:迭代器番外篇
  17. python 三方库字典
  18. Python实现最小二乘法拟合直线(求斜率截距)
  19. 使用protege过程中的一些小技巧
  20. 做好织梦dedecms安全防护全部方法

热门文章

  1. 蒸汽朋克简单图形免扣PNG素材,让设计艺术变得简单
  2. token 微信access 过期_如何设计 QQ、微信等第三方账号登陆 ?以及设计数据库表!...
  3. velodyne显示点云中grid的单位_孝感好的舞台背景显示屏施工创新服务_胜辉屏安...
  4. insert into 时间_值得花点时间背记的out of有关短语
  5. Windows监听进程的两个函数
  6. Python--面向对象学习继承(11.17)
  7. 监控和调整Linux网络协议栈的图解指南:接收数据
  8. OpenSubdiv:大规模并行CPU和GPU架构上实现高性能细分表面
  9. clickhouse原理解析与应用实践 pdf_阿里专家分享内部绝密RocketMQ核心原理与最佳实践PDF...
  10. python的基础集合(八)