首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Hashable DatetimeIndex

Hashable DatetimeIndex
EN

Stack Overflow用户
提问于 2017-05-19 01:06:00
回答 1查看 1.1K关注 0票数 0

我正在尝试使用@functools.lru_cache()注解来记住一个方法foo(dti: DatetimeIndex)。然而,它向TypeError: unhashable type: 'DatetimeIndex'抱怨。

既然DatetimeIndex对象是不可变的,那么应该有一种很好的方法来将它们用作memoization的键,对吧?

另外,如果DatetimeIndex定义一个哈希方法来简单地返回它的id(),那又有什么错呢

EN

回答 1

Stack Overflow用户

发布于 2017-06-01 06:00:17

我最终编写了自己的装饰器,以便能够记忆接受DataFrame对象(或Hashable对象,以防DataFrame将来变得可哈希)的方法,它看起来如下所示:

代码语言:javascript
复制
def my_memoize(func):
    # TODO use an LRU cache so we don't grow forever
    cache = {}

    def decorating_function(self, arg):
        key = arg if isinstance(arg, collections.Hashable) else id(arg)
        key = (self, key)
        if key in cache:
            return cache[key]
        value = func(self, arg)
        cache[key] = value
        return value

    return decorating_function

我这样使用它:

代码语言:javascript
复制
@my_memoize
def calculate_stuff(self, df):
    ...
票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44053963

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档