问题标签 [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.
python - 试图在算法中将列表实现为字典键,什么是快速解决方案?
我正在尝试在 Python中实现 Apriori 算法... http://codeding.com/articles/apriori-algorithm 。
最高级别的数据结构是这样的:
我需要跟踪任意数量的集合、这些集合的基数(k 级)以及我为每个集合计算的值。我认为对所有集合使用列表将是一个好主意,因为它们保持顺序并且是可迭代的。如上所示,我尝试使用列表作为 itemSetDictionary 中的键,但现在我看到可迭代数据结构不允许作为 Python 字典中的键。
我正在尝试找出解决此问题的最快方法。我知道我可以创建一些类,以便键现在是对象,而不是可迭代的数据结构,但我觉得这需要很长时间才能改变。
有任何想法吗?
jquery - 如何将大量短语关联到集群/类别中?
我正在尝试创建一个仍按类别和子类别组织的目录站点。假设总共有 150 个子类别。
我想要一个与这 150 个子类别匹配的短语/关键字的 mySQL 数据库(假设我总共有 50,000 个短语,范围从 1 个单词到 3 个单词)。或者从标签的角度来考虑,但标签都对应于这 150 个子类别之一。
然后用户可以输入文本,并接收关于相应类别的建议(或消息,“我们无法将您的搜索词与类别相关联”)
示例:有人输入短语“狗咬伤”并建议使用人身伤害律师类别。
为了增加一层复杂性,是否可以合并额外的逻辑,以便特定短语可以与多个类别相关联?
示例:有人输入“租户争议”并建议两个类别:房东辩护律师和房东原告律师,因为从该短语中不知道该人是房东还是房客。
haskell - 为什么 Data.HashTable 使用盐散列(来自 Data.Hashable)?
我不明白为什么Data.HashTable
要使用Data.Hashable
,它hashWithSalt
是(唯一/基本)方法。
这不符合计算哈希值一次并将其存储在对象中的自然优化(自然,因为 Haskell 对象是不可变的)。
如果我想使用HashTables
它,那么我将被迫实施hashWithSalt
. (从 1.2.0.* 到 1.2.1.*,hashablehash
作为类方法重新引入,但这没有帮助?)
实际的 Table 实现似乎没有使用hashWithSalt
(HashTable.ST.Linear
根本没有,HashTable.ST.Cuckoo
只使用两个固定的盐)。
dictionary - 如何使用 Swift 枚举作为字典键?(符合 Equatable)
我已经定义了一个枚举来代表一个“站”的选择;站由唯一的正整数定义,因此我创建了以下枚举以允许负值表示特殊选择:
我想将这些值用作字典中的键。声明 Dictionary 会产生 StationSelector 不符合 Hashable 的预期错误。使用简单的哈希函数很容易符合 Hashable:
但是,Hashable
需要符合Equatable
,并且我似乎无法在我的枚举上定义 equals 运算符以满足编译器的要求。
编译器抱怨这是在一行中的两个声明,并且想要放一个;
after func
,这也没有意义。
有什么想法吗?
swift - 为什么需要在类之外定义一个等价协议?
当我实现 Hashable 协议时。需要在类之外定义一个等价的协议函数,如下所示。如下。
这对我来说有点奇怪。在上面的例子中 func == 应该属于 Swap 类。那么为什么我们需要在类外声明 func == 呢?
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 属性返回的值不需要在同一程序的不同执行或不同程序中相同。有关遵守协议的更多信息,请参阅协议。
xcode - CFString 不符合 Hashable 协议?
我最近更新到 Xcode 6.1 以便能够使用 iOS 8.1,但现在我的最新项目面临错误。
对于以下行,我收到“CFString!不符合协议 Hashable”的错误消息:
运行 Xcode 6.0.1 时我没有收到此错误。而且,Xcode 6.1 非常慢。我的意思是,太慢了,它实际上并没有完成加载任何东西。索引需要几分钟,而构建需要很长时间,以至于我无法坐下来……它也崩溃了。
我的主要问题是 Hashable 协议。那是怎么回事?
python - Python:在列表中查找重复项
我有一个浮动列表,我想知道其中有多少重复项。
我试过这个:
我也尝试过使用 collections.counter,但我总是遇到同样的错误
我已经查看了类似的问题,但我无法理解 hashable 的含义,为什么列表(或 numpy 数组)不可哈希以及我应该使用哪种类型。
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
python - 为什么我不能在不可散列实例的明显可散列方法上调用 hash()?
假设我有一本字典:
它有一个方法clear()
:
...具有一个__hash__
属性:
...这是可调用的:
那为什么我不能散列呢?
注意:我知道dict
对象是不可散列的——我很好奇为什么这个限制会扩展到它们的方法,尽管如上所述,它们似乎声称不是这样?