万物之中, 希望至美.

在字典中将键映射到多个值上

问题

我们想要将一个列表,里面是(key, value)这样的键值对元组,转换成一个key相同的value的字典,如下所示:

data = [('a', 1), ('a', 2), ('a', 3), ('b', 4), ('b', 5)]

# convert to
d = {
    'a': [1, 2, 3],
    'b': [4, 5]
}
......

设计模式之原型模式

原型模式(The Prototype Pattern)用于创建对象的完全副本,有点类似与现实生活中的有丝分裂,在 Python 中可以使用内置的copy模块实现。

拷贝分为深拷贝浅拷贝

  • 深拷贝会递归复制并创建新的对象
  • 浅拷贝会利用引用指向同一个对象

深拷贝的优点是对象之间互不影响,但是会耗费资源,创建比较耗时;如果不会修改对象可以使用浅拷贝,更加节省资源和创建时间。

......

设计模式之构造模式

当出现以下几种情况时,可以考虑使用构造模式:

  1. 当想要创建一个复杂对象(对象由多个部分构成,且对象的创建要经过多个不同的步骤,这些步骤也许还遵从特定的顺序)
  2. 要求一个对象能有不同的表现,并希望将对象的构造与表现解耦
  3. 想要在某个时间点创建对象,但在稍后的时间点再访问

可以这么理解,你要买电脑,工厂模式直接返回一个你需要型号的电脑,但是构造模式允许你自定义电脑各种配置类型,组装完成后给你。这个过程你可以传入builder从而自定义创建的方式。

......

Python工厂模式

工厂模式主要是为了解决对象创建问题:客户端可以请求一个对象,而不需要知道这个对象来自哪里,换句话说,客户端在请求一个对象时,不需要知道该对象是被哪一个类创建的。这样做的好处是可以方便的解耦对象的使用和创建,工厂模式有两种实现方式:工厂方法和抽象工厂。

......

Python单例模式

Python单例模式

Design ptterns are discoverd, not invented.- Alex Martelli

......

0到1,Celery从入门到出家

本文转载自公众号「Python之禅」,原文链接:https://mp.weixin.qq.com/s/w63Ut5zZjlOypvrhO7YWIA

在一个应用服务中,对于时效性要求没那么高的业务场景,我们没必要等到所有任务执行完才返回结果,例如用户注册场景中,保存了用户账号密码之后,就可以立即返回,后续的账号激活邮件,可以用一种异步的形式去处理,这种异步操作可以用队列服务来实现。否则,如果等到邮件发送成功可能几秒过去了。

......

MySQL中 only_full_group_by 问题

最近在试用 MySQL 数据库做查询时,遇到了这么个问题,当我使用 GROUP_BY对要查询的数据进行分组的时候,抛出了一个InternalError的错误,当时我:???

1055, “Expression #1 of SELECT list is not in GROUP BY clause and contains nonaggregated column ‘xxx’ which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql_mode=only_full_group_by”

......

「Python3学习笔记」读书笔记—集合

集合存储的是非重复对象,所谓的非重复对象是指:除了不是同一对象外,值也不能相同。 # Python集合判重公式 (a is b) OR (hash(a) == hash(b) AND a == b) 如果不是同一对象,那么先判断哈希值,然后比较内容。因为受限于哈希算法,不同内容可能返回相同的哈希值(哈希碰撞),那么就有必要继续比较内容是否相同。 那么为什么要先比较哈希值,而不直接比较内容呢?首先,与大多数内容(例如字符串)相比,整数哈希值比较的性能高得多;其次,哈希值不......

「Python3学习笔记」读书笔记—字典

字典是内置类型中唯一的映射(Mapping)结构,基于哈希表存储键值对数据。 值可以是任意类型的数据,但主键必须是可哈希的类型。常见的可变类型,如列表、集合等都不能作为主键使用。即便是元组等不可变类型,也不能引用可变类型元素,即元组中不能含有可变类型的元素。 >>> import collections >>> issubclass(list, collections.Hashable) False >>> issubclass(int, collections.Hashable) True >>> hash((1, 2, 3)) 2528502973977326415 >>> hash((1, 2, [1, 2])) # 包含可变类型 Traceback (most recent call last): File "<stdin>", line 1, in <module> TypeError: unhashable type: 'list' 哈希计算通过调用 __hash__ 方法返回整数值,用来快速比较内容是否相同......

「Python3学习笔记」读书笔记—列表

Python 中的 list 类型应该是我们平时用的最多一个数据类型,如果仅从操作方式上看,列表像是数组和链表的综合体,除了按索引访问外,还支持插入、追加、删除等操作,完全可以当作队列或栈来使用,因此,如果不考虑性能问题,列表是一种易用且功能完善的理想数据结构。 列表的内部结构由两部分构成:(1) 保存元素数量和内存分配计数的头部,(2) 存储元素指针的独立数组。所有的元素使用该数组来保存指针引用,并不嵌入实际的内容。 作为使......