摘要: 问题:一个能将键(key)映射到多个值的字典(即所谓的一键多值字典[multidict]) 解决方案:如果想让键映射到多值,需要将这多个值保持到另一个容器如列表或集合中; 更方便的创建这样的字典是利用collections模块中的defaultdict类。defaultdict的一个特点是它会自动给 阅读全文
posted @ 2016-08-06 20:24 垄上行 阅读(336) 评论(0) 推荐(0) 编辑
摘要: 问题:要实现一个队列,它能够以给定的优先级对元素排序,且每次pop操作时都会返回优先级最高的那个元素; 解决方案:采用heapq模块实现一个简单的优先级队列 可以看出:第一次执行pop()操作时返回的元素具有最高的优先级;对于相同优先级的两个元素(foo和gork)返回的顺序同它们插入到队列时的顺序 阅读全文
posted @ 2016-08-06 18:12 垄上行 阅读(300) 评论(0) 推荐(0) 编辑
摘要: 问题:想在某个集合中找出最大或最小的N个元素 解决方案:heapq模块中的nlargest()和nsmallest()两个函数正是我们需要的。 这两个函数接受一个参数key,允许其工作在更复杂的数据结构之上: 堆(heap)最重要的特性就是heap[0]总是最小的元素。可通过heapq.heappo 阅读全文
posted @ 2016-08-06 17:27 垄上行 阅读(304) 评论(0) 推荐(0) 编辑
摘要: 问题:希望在迭代或是其他形式的处理过程中对最后几项记录做一个有限的历史记录统计 解决方案:选择collections.deque。 如下的代码对一系列文本行做简单的文本匹配操作,当发现有匹配时就输出当前的匹配行以及最后检查过的N行文本: 正如上面的代码一样,当编写搜索某项记录的代码时,通常会用到含有 阅读全文
posted @ 2016-08-06 16:44 垄上行 阅读(269) 评论(0) 推荐(0) 编辑