随笔分类 - Python-CookBook
摘要:问题 想要一个能将键(key)映射到多个值的字典(即所谓的一键多值字典[multidict]) 解决方案 字典是一种关联容器,每个键都映射到一个单独的值上。如果想让键映射到多个值,需要将这多个值保存到另一个容器如列表或集合中。例如,可能像这样创建字典: 要使用列表还是集合完全取决于应用的意图。如果希
阅读全文
摘要:问题 想要实现一个队列,它能够以给定的优先级来对元素排序,且每次pop操作时都会返回优先级最高的那个元素。 解决方案 下面的类利用heapq模块实现了一个简单的优先级队列 下面是如何使用这个类的例子: 请注意观察,第一次执行pop()操作时返回的元素具有最高的优先级。我们也观察到拥有相同优先级的两个
阅读全文
摘要:问题: 想在某个集合中找到最大或最小的N个元素 解决方案: heapq 模块中有两个函数 nlargest() 和 nsmallest() 它们正是我们需要的。例如: 这两个函数都可以接受一个参数 key ,从而允许它们工作在更加复杂的数据结构之上。例如: 讨论: 如果正在寻找最大或最小的N个元素,
阅读全文
摘要:问题: 希望在迭代或是其他形式的处理过程中对最后几项记录做一个有限的历史记录统计 解决方案: 保存有限的历史记录可算是 colletions.deque 的完美应用场景了。例如:下面的代码对一些列文本行做最简单的文本匹配操作,当发现有匹配时就输出当前的匹配行以及最后检查过的N行文本 讨论: 当编写搜
阅读全文
摘要:问题: 需要从某个可迭代对象中分解出N个元素,但是这个可迭代对象的长度可能超过N,这会导致出现”分解的值过多(too many values to unpack)“的异常 解决方案: python的”*表达式“可以用来解决这个问题。例如,假设开设了一门课程,并决定在期末的作业成绩中去掉第一个和最后一
阅读全文
摘要:问题: 有一个包含N个元素的元组或序列,现在想将他们分解为N个单独的变量 解决方案: 任何序列(或可迭代的对象)都可以通过一个简单的赋值操作来分解为单独的变量。唯一的要求是变量的总数和结构要与序列相吻合。例如: 如果元素的数量不匹配,将得到一个错误提示。例如: 讨论 实际上不仅仅只是元组或列表,只有
阅读全文