问题标签 [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.
iphone - 网络连接警告
Tweetie(现在的 Twitter)应用程序弹出网络可达性警告。这也是在 Foursquare 和 Hashable 应用程序中完成的(据我所知)。某处是否有此实现的示例代码?谢谢。
python - 使用带有字典参数的@functools.lru_cache
我有一种将(除其他外)字典作为参数的方法。该方法正在解析字符串,并且字典为某些子字符串提供了替换,因此它不必是可变的。
这个函数经常被调用,并且在冗余元素上被调用,所以我认为缓存它会提高它的效率。
但是,正如您可能已经猜到的那样,因为dict
它是可变的,因此不可散列,@functools.lru_cache
不能装饰我的函数。那么我该如何克服呢?
如果它只需要标准库类和方法,则可以加分。理想情况下,如果它存在于我从未见过的某种frozendict
标准库中,那会让我很开心。
PS:namedtuple
仅在最后的手段,因为它需要一个大的语法转变。
python - 为什么我不能在 python 中使用列表作为 dict 键?
我对什么可以/不能用作 python dict 的键有点困惑。
所以元组是一种不可变的类型,但是如果我在其中隐藏一个列表,那么它就不能成为键..我不能像在模块中那样轻松地隐藏一个列表吗?
我有一些模糊的想法,即密钥必须是“可散列的”,但我承认我自己对技术细节的无知;我不知道这里到底发生了什么。如果您尝试将列表用作键,而将哈希用作它们的内存位置,会出现什么问题?
python - Unable to use a tuple as a dictionary key?
The code is a little complex, sorry. Please focus on the parallel_p
function. Although sign
is a tuple, Python complains:
if sign in hashtable
and gives a TypeError
. Why is sign
a numpy.ndarray
rather than a tuple? I created it as a tuple.
IN TEST MODULE
OUTPUT:
python - 如何在 Python 中测试“任何深度的不变性”?
我将 Python 对象定义为“在任何深度都不可变”iff
- 它(名义上)是不可变的;和
- 如果它是一个“容器”对象,那么它只包含“在任何深度都不可变”的对象;
例如((1, 2), (3, 4))
,在任何深度都是不可变的,而((1, 2), [3, 4])
不是(即使后者由于是元组,“名义上”是不可变的)。
是否有合理的方法来测试 Python 对象是否“在任何深度都不可变”?
测试第一个条件相对容易(例如使用collections.Hashable
类,并忽略不正确实现方法的可能性__hash__
),但第二个条件更难测试,因为“容器”对象的异质性,以及迭代他们的“内容”......
谢谢!
python - 自动使类可散列
有几种标准方法可以使类可散列,例如(借用SO):
现在假设我有很多类要设为可散列。它们都是不可变的,具有不可变的属性,并且批量散列所有这些属性是可以接受的(对于具有太多属性的类,我们只想散列几个足以避免大多数冲突的属性)。我可以避免__key()
为每个班级手动编写方法吗?
__key()
为它们创建一个定义,__eq__
和的基类是个好主意__hash__
吗?特别是,我不确定找到所有应该进入的实例属性__hash__
是否可行。我知道这通常是不可能的,但在这种情况下,我们可以对对象进行更多假设(例如,它是不可变的 -__init__
完成后,它的属性都是可散列的,等等)。
(如果继承层次结构不起作用,也许装饰器会起作用?)
python - 是否有另一种方法可以避免大型可散列对象的重复?
我正在处理文本并且需要存储大量可散列对象 - 有时是字符串,有时是单词元组等。我一直在考虑使用散列函数来提供一个简单的存储和检索类,但我的第一种方法是单个哈希键可能会解析为多个项目。鉴于我添加了一个将 add 的返回值作为参数的 get 函数,我无法知道要返回列表中的哪个项目。
另一种方法最终确保每个唯一的可散列项只有一个映射。
这有效并确保 add 的返回值可用于返回唯一值。只是看起来有点笨拙。有没有更好、更 Pythonic 的方式来处理这种情况?
我对这个问题一直模棱两可。有两个问题 - 一个是我有数百万个对象当前正在使用从 100 到 1000 字节的键(big_hashable 的东西)。将它们转换为整数可以处理比我目前更多的数据。其次,只保留每个 big_hashable 事物的单个规范副本也会减少内存使用量,尽管这是引发我的问题的第一个问题,因为每个键实际上都是 big_hashable 事物的单独副本。