42得票7回答
在Python中检查可变性?

考虑以下这段代码:a = {...} # a is an dict with arbitrary contents b = a.copy() 在字典的键和值中,可变性扮演了什么角色? 如何确保一个字典的键或值的更改不会反映在另一个字典中? 这与字典键的可哈希约束有什么关系? (constra...

7得票3回答
NSObject是可哈希的,但采用NSObject的协议却不是?

在我提交radar之前,想向社区进行一次合理性检查: 在一个Obj-C的.h文件中: @protocol myProto <NSObject> @end 在一个.swift文件中(通过桥接头文件访问上述协议定义): class myClass { // This...

20得票4回答
如何处理Swift中字典的哈希冲突问题

简述 我的自定义结构实现了Hashable Protocol。然而,在向Dictionary中插入键时发生哈希冲突时,它们不会自动处理。我该如何解决这个问题? 背景 我以前曾在这里问过这个问题——如何为Int数组(自定义字符串结构)在Swift中实现Hashable Protocol。后...

10得票1回答
元类型(.Type)可以用作字典中的键吗?

我有这样的东西:class Lumber { } class Fruit { } enum Size { case small case medium case large } let lumberSize = [ Size.small: "2x4", ...

12得票2回答
创建一个代表可开关的可哈希对象的协议

我正在尝试创建一个简单的协议,用于确定对象是处于“开”状态还是“关”状态。对于实现对象,其解释取决于该对象。对于UISwitch,它表示开关是否打开或关闭(显然)。对于UIButton,它可以表示按钮是否处于selected状态。对于Car,它可以表示汽车引擎是否开启,甚至可以表示汽车是否在移...

7得票2回答
无法将元组用作字典键?

这段代码有点复杂,抱歉。请关注parallel_p函数。虽然sign是一个元组,但Python报错: if sign in hashtable并显示TypeError。为什么sign是numpy.ndarray而不是元组?我创建它时是个元组。 p_dist = dict() def pa...

68得票5回答
什么会导致用户定义的类无法哈希化?

docs表示只要定义了__hash__方法和__eq__方法,一个类就可以是可哈希的。然而: class X(list): # read-only interface of `tuple` and `list` should be the same, so reuse tuple.__h...

9得票2回答
如何将包含NumPy数组的元组变为可哈希化的?

使numpy数组可哈希的一种方法是将其设置为只读。在我过去的经验中,这种方式行之有效。但是,当我在元组中使用这样的numpy数组时,整个元组不再可哈希,我不理解这个问题。下面是我为说明问题而编写的示例代码: import numpy as np npArray = np.ones((1,1...

42得票9回答
使用@functools.lru_cache与字典参数

我有一个方法,它需要一个字典作为参数之一。该方法解析字符串,并且字典提供了一些子字符串的替换值,因此它不需要是可变的。 由于这个函数会被频繁调用,而且针对冗余元素,所以我想到将其缓存起来可以提高效率。 但是,正如你可能已经猜到的那样,由于字典是可变的,因此无法使用@functools.lr...

42得票5回答
我该如何将Swift枚举用作字典键?(遵守Equatable协议)

我已经定义了一个枚举类型来表示“站点”的选择;站点由唯一的正整数定义,因此我创建了以下枚举类型,允许负值表示特殊选择:enum StationSelector : Printable { case Nearest case LastShown case List ...