问题
我们想要将一个列表,里面是(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]
}
万物之中, 希望至美.
我们想要将一个列表,里面是(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
模块实现。
拷贝分为深拷贝
和浅拷贝
:
深拷贝的优点是对象之间互不影响,但是会耗费资源,创建比较耗时;如果不会修改对象可以使用浅拷贝,更加节省资源和创建时间。
......当出现以下几种情况时,可以考虑使用构造模式:
可以这么理解,你要买电脑,工厂模式直接返回一个你需要型号的电脑,但是构造模式允许你自定义电脑各种配置类型,组装完成后给你。这个过程你可以传入builder从而自定义创建的方式。
......工厂模式主要是为了解决对象创建问题:客户端可以请求一个对象,而不需要知道这个对象来自哪里,换句话说,客户端在请求一个对象时,不需要知道该对象是被哪一个类创建的。这样做的好处是可以方便的解耦对象的使用和创建,工厂模式有两种实现方式:工厂方法和抽象工厂。
............Design ptterns are discoverd, not invented.- Alex Martelli
本文转载自公众号「Python之禅」,原文链接:https://mp.weixin.qq.com/s/w63Ut5zZjlOypvrhO7YWIA
在一个应用服务中,对于时效性要求没那么高的业务场景,我们没必要等到所有任务执行完才返回结果,例如用户注册场景中,保存了用户账号密码之后,就可以立即返回,后续的账号激活邮件,可以用一种异步的形式去处理,这种异步操作可以用队列服务来实现。否则,如果等到邮件发送成功可能几秒过去了。
......最近在试用 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”
集合存储的是非重复对象,所谓的非重复对象是指:除了不是同一对象外,值也不能相同。 # Python集合判重公式 (a is b) OR (hash(a) == hash(b) AND a == b) 如果不是同一对象,那么先判断哈希值,然后比较内容。因为受限于哈希算法,不同内容可能返回相同的哈希值(哈希碰撞),那么就有必要继续比较内容是否相同。 那么为什么要先比较哈希值,而不直接比较内容呢?首先,与大多数内容(例如字符串)相比,整数哈希值比较的性能高得多;其次,哈希值不......
字典是内置类型中唯一的映射(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__ 方法返回整数值,用来快速比较内容是否相同......
Python 中的 list 类型应该是我们平时用的最多一个数据类型,如果仅从操作方式上看,列表像是数组和链表的综合体,除了按索引访问外,还支持插入、追加、删除等操作,完全可以当作队列或栈来使用,因此,如果不考虑性能问题,列表是一种易用且功能完善的理想数据结构。 列表的内部结构由两部分构成:(1) 保存元素数量和内存分配计数的头部,(2) 存储元素指针的独立数组。所有的元素使用该数组来保存指针引用,并不嵌入实际的内容。 作为使......