python - 尝试将 pydantic 模型添加到集合中会出现不可散列的错误

标签 python python-3.x pydantic

我有以下代码

from pydantic import BaseModel


class User(BaseModel):
    id: int
    name = "Jane Doe"


def add_user(user: User):
    a = set()
    a.add(user)
    return a


add_user(User(id=1))

当我运行此程序时,出现以下错误:

TypeError: unhashable type: 'User'

有办法解决这个问题吗?

最佳答案

您只需为该类实现一个哈希函数即可。 您可以通过散列用户的 id 或名称并将其作为散列返回来轻松做到这一点...

像这样:

from pydantic import BaseModel


class User(BaseModel):
    id: int
    name = "Jane Doe"

    def __hash__(self) -> int:
        return self.name.__hash__() # or self.id.__hash__()


def add_user(user: User):
    a = set()
    a.add(user)
    return a


add_user(User(id=1))

关于python - 尝试将 pydantic 模型添加到集合中会出现不可散列的错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/76143613/

相关文章:

python - 通过 subprocess.communicate 在 python 脚本之间传输 pickled 对象输出

python - Pydantic:如何将Dict分解为模型中的键和值?

python - pydantic 去除空白

python - Jupyter:安装新模块

python - 如何检查输入是否为二进制格式(1 和 0)?

python - 如何在 Django 中通过外键对过滤查询?

java - Py4J 的开销比 Jython 和 JPype 大

python - 以正常形式打印 float ,而不是指数形式/科学记数法

python - 如何为 Pydantic 列表字段提供默认值?

python-3.x - 检查 gtk.notebook 中定义文本的选项卡是否存在 +gtk3