摘要: 多个字典或映射,希望在逻辑上将它们组合成单个映射以执行某些操作,例如查找值或检查键是否存在。 假如现在有两个字典对象a,b。 假如现在要检查某一键是否在其中一个字典对象中存在。首先检查a,若a中不存在,则检查b。可以使用collections模块的ChainMap类,如下: ChainMap采用多个 阅读全文
posted @ 2019-08-07 22:10 Jeffrey_Yang 阅读(488) 评论(0) 推荐(0) 编辑
摘要: 场景:需要执行缩减函数(例如,sum(),min(),max()),但首先需要转换或过滤数据。 通常可以使用生成器表达式进行数据的过滤,sum,min,max的参数为iterable,而generator继承iterator,iterator继承iterable。故生成器表达式同样可以作为这些函数的 阅读全文
posted @ 2019-08-07 17:19 Jeffrey_Yang 阅读(148) 评论(0) 推荐(0) 编辑
摘要: 通常列表或元组通过位置(索引)来访问元素,但这使得代码有时难以阅读。 通常我们希望通过按名称访问元素来减少对位置的依赖。 collections模块的namedtuple()函数(实际上是一个工厂方法)提供了一个tuple的子类,该类拥有tuple的常规操作,同时提供了按名称访问序列元素的能力。 命 阅读全文
posted @ 2019-08-07 16:16 Jeffrey_Yang 阅读(172) 评论(0) 推荐(0) 编辑
摘要: 有时候,需要根据已知的字典对象构造一个新的字典对象。这种场景可以使用字典生成式(dictionary comprehension)。如下: 同样,也可以使用dict的构造函数,如下: 然而,使用字典生成式更清晰,实际运行速度要快得多(在示例中使用的字典上测试时速度快两倍)。 下面是另一种示例: 阅读全文
posted @ 2019-08-07 14:07 Jeffrey_Yang 阅读(273) 评论(0) 推荐(0) 编辑
摘要: 序列中的数据,经常需要提取特定条件的数据,或减少序列中的数据。 常用的方式是使用列表生成式(list comprehension),如下: 有些时候,过滤条件比价复杂,难以使用简单的列表生成式或生成器表达式来过滤。比如说,过滤条件涉及到异常的处理或其他更复杂的情形。对于以上情况,我们可以将过滤条件的 阅读全文
posted @ 2019-08-07 11:25 Jeffrey_Yang 阅读(199) 评论(0) 推荐(0) 编辑
摘要: 有一系列字典或实例,并且希望根据特定字段的值(例如日期)对分组(group)的数据进行迭代。 下面有一个子项为字典的序列(list),假如要根据日期(date)进行分组迭代: 在根据指定项分组之前,我们需要针对该项进行排序。排序后,相同指定项的为一组。 若只想将相同域的项合并到一个大的数据结构中,如 阅读全文
posted @ 2019-08-07 10:05 Jeffrey_Yang 阅读(181) 评论(0) 推荐(0) 编辑