问题标签 [hashable]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
64 浏览

python - 试图在算法中将列表实现为字典键,什么是快速解决方案?

我正在尝试在 Python中实现 Apriori 算法... http://codeding.com/articles/apriori-algorithm 。

最高级别的数据结构是这样的:

我需要跟踪任意数量的集合、这些集合的基数(k 级)以及我为每个集合计算的值。我认为对所有集合使用列表将是一个好主意,因为它们保持顺序并且是可迭代的。如上所示,我尝试使用列表作为 itemSetDictionary 中的键,但现在我看到可迭代数据结构不允许作为 Python 字典中的键。

我正在尝试找出解决此问题的最快方法。我知道我可以创建一些类,以便键现在是对象,而不是可迭代的数据结构,但我觉得这需要很长时间才能改变。

有任何想法吗?

0 投票
0 回答
39 浏览

jquery - 如何将大量短语关联到集群/类别中?

我正在尝试创建一个仍按类别和子类别组织的目录站点。假设总共有 150 个子类别。

我想要一个与这 150 个子类别匹配的短语/关键字的 mySQL 数据库(假设我总共有 50,000 个短语,范围从 1 个单词到 3 个单词)。或者从标签的角度来考虑,但标签都对应于这 150 个子类别之一。

然后用户可以输入文本,并接收关于相应类别的建议(或消息,“我们无法将您的搜索词与类别相关联”)

示例:有人输入短语“狗咬伤”并建议使用人身伤害律师类别。

为了增加一层复杂性,是否可以合并额外的逻辑,以便特定短语可以与多个类别相关联?

示例:有人输入“租户争议”并建议两个类别:房东辩护律师和房东原告律师,因为从该短语中不知道该人是房东还是房客。

0 投票
1 回答
462 浏览

haskell - 为什么 Data.HashTable 使用盐散列(来自 Data.Hashable)?

我不明白为什么Data.HashTable 要使用Data.Hashable ,它hashWithSalt是(唯一/基本)方法。

这不符合计算哈希值一次并将其存储在对象中的自然优化(自然,因为 Haskell 对象是不可变的)。

如果我想使用HashTables它,那么我将被迫实施hashWithSalt. (从 1.2.0.* 到 1.2.1.*,hashablehash作为类方法重新引入,但这没有帮助?)

实际的 Table 实现似乎没有使用hashWithSaltHashTable.ST.Linear根本没有,HashTable.ST.Cuckoo只使用两个固定的盐)。

0 投票
4 回答
30001 浏览

dictionary - 如何使用 Swift 枚举作为字典键?(符合 Equatable)

我已经定义了一个枚举来代表一个“站”的选择;站由唯一的正整数定义,因此我创建了以下枚举以允许负值表示特殊选择:

我想将这些值用作字典中的键。声明 Dictionary 会产生 StationSelector 不符合 Hashable 的预期错误。使用简单的哈希函数很容易符合 Hashable:

但是,Hashable需要符合Equatable,并且我似乎无法在我的枚举上定义 equals 运算符以满足编译器的要求。

编译器抱怨这是在一行中的两个声明,并且想要放一个;after func,这也没有意义。

有什么想法吗?

0 投票
3 回答
446 浏览

swift - 为什么需要在类之外定义一个等价协议?

当我实现 Hashable 协议时。需要在类之外定义一个等价的协议函数,如下所示。如下。

这对我来说有点奇怪。在上面的例子中 func == 应该属于 Swap 类。那么为什么我们需要在类外声明 func == 呢?

0 投票
3 回答
7162 浏览

objective-c - NSObject 是 Hashable 但采用 NSObject 的协议不是?

在我提交雷达之前,只需与社区进行一次完整性检查:

在 .h Obj-C 文件中:

在 .swift 文件中(可以通过桥接头访问上述协议定义):

对 NSObject 类的检查表明它(或它映射到的 NSObjectProtocol)没有实现 Hashable 协议所需的 hashValue 方法,也没有明确采用它。

因此,尽管如此,在幕后某处 NSObject 仍被标记为 Hashable,但并未扩展到采用 NSObject/NSObjectProtocol 的协议。

我有错误还是我错过了什么?

:) 张

附加信息:

文档表明:

  • 字典的键类型的唯一要求是它是 Hashable 并且它实现了==.
  • 您确实可以使用协议。
字典键类型的哈希值

类型必须是可散列的,才能用作字典的键类型——也就是说,该类型必须提供一种为其自身计算散列值的方法。哈希值是对于所有比较相等的对象都相同的 Int 值,因此如果 a == b,则遵循 a.hashValue == b.hashValue。

Swift 的所有基本类型(例如 String、Int、Double 和 Bool)默认都是可散列的,所有这些类型都可以用作字典的键。默认情况下,没有关联值的枚举成员值(如枚举中所述)也是可散列的。

注意你可以使用你自己的自定义类型作为字典键类型,方法是让它们符合 Swift 标准库中的 Hashable 协议。符合 Hashable 协议的类型必须提供称为 hashValue 的可获取 Int 属性,并且还必须提供“等于”运算符 (==) 的实现。类型的 hashValue 属性返回的值不需要在同一程序的不同执行或不同程序中相同。有关遵守协议的更多信息,请参阅协议。

0 投票
1 回答
1090 浏览

xcode - CFString 不符合 Hashable 协议?

我最近更新到 Xcode 6.1 以便能够使用 iOS 8.1,但现在我的最新项目面临错误。

对于以下行,我收到“CFString!不符合协议 Hashable”的错误消息:

运行 Xcode 6.0.1 时我没有收到此错误。而且,Xcode 6.1 非常慢。我的意思是,太慢了,它实际上并没有完成加载任何东西。索引需要几分钟,而构建需要很长时间,以至于我无法坐下来……它也崩溃了。

我的主要问题是 Hashable 协议。那是怎么回事?

0 投票
3 回答
167 浏览

python - Python:在列表中查找重复项

我有一个浮动列表,我想知道其中有多少重复项。

我试过这个:

我也尝试过使用 collections.counter,但我总是遇到同样的错误

我已经查看了类似的问题,但我无法理解 hashable 的含义,为什么列表(或 numpy 数组)不可哈希以及我应该使用哪种类型。

0 投票
2 回答
1221 浏览

swift - swift 可散列协议散列函数是否需要返回唯一值?

我正在学习 iOS swift Tetris 教程* 并完成并运行。但我对一个特定的方面感到困惑——Hashable 协议。功能:

行数为 0..9,列数为 0..20。注释说这个函数“我们返回我们的行和列属性的异或来为每个块生成一个唯一的整数。”。但我的理解是 0^1 与 1^0 相同,等等......我想知道如果哈希函数不是这样唯一的,或者碰撞通常是可以的,这是否是一个问题?正如我所说,该应用程序似乎工作正常......

* https://www.bloc.io/tutorials/swiftris-build-your-first-ios-game-with-swift#!/chapters/681

0 投票
2 回答
986 浏览

python - 为什么我不能在不可散列实例的明显可散列方法上调用 hash()?

假设我有一本字典:

它有一个方法clear()

...具有一个__hash__属性:

...这是可调用的:

那为什么我不能散列呢?

注意:我知道dict对象是不可散列的——我很好奇为什么这个限制会扩展到它们的方法,尽管如上所述,它们似乎声称不是这样?