![]() |
1
7
不要。我同意安德烈对前面的问题的评论,即把字典作为键,尤其是不嵌套的键是没有意义的。您的数据模型显然非常复杂,字典可能不是正确的答案。你应该试试OO。 |
![]() |
2
6
基于Chris Lutz的解决方案。
|
![]() |
3
3
基于Chris Lutz的解决方案。请注意,这不会处理由迭代更改的对象,例如流,也不会处理循环。
|
![]() |
4
2
如果您真的必须这样做,请使您的对象可以散列。将要放入的内容作为键进行子类化,并提供一个uuu hash_uuuu函数,该函数将返回此对象的唯一键。 举例说明:
如果散列值不够唯一,则会发生冲突。可能也很慢。 |
![]() |
5
2
我完全不同意评论和回答说,这不应该因为数据模型的纯粹原因而这样做。 字典将一个对象与另一个使用前一个对象作为键的对象相关联。字典不能用作键,因为它们不可哈希。这并不会降低将字典映射到其他对象的意义/实用性/必要性。 正如我理解的python绑定系统,您可以将任何字典绑定到多个变量(或者反过来,取决于您的术语),这意味着这些变量都知道该字典的唯一“指针”。是否可以将该标识符用作哈希键? 如果您的数据模型确保/强制您不能使用两个内容相同的字典作为键,那么这对我来说似乎是一种安全的技术。 我应该补充一点,我不知道该怎么做。 我不完全知道这应该是一个答案还是一个评论。如果需要,请纠正我。 |
![]() |
6
1
用 recursion 你说什么?
您可以为任何其他可变类型添加其他类型测试,使其成为可哈希的。这不应该很难。 |
![]() |
7
1
我在使用基于调用签名缓存以前调用结果的装饰器时遇到了这个问题。我不同意这里关于“你不应该这样做”的评论/回答,但我认为重要的是要认识到当沿着这条路走下去时,可能会出现令人惊讶和意想不到的行为。我的想法是,由于实例是可变的和可散列的,并且似乎不实际地改变这一点,所以创建非散列类型或对象的可散列等价物并没有本质上的错误。当然,这只是我的观点。 对于任何需要Python2.5兼容性的人来说,下面的内容可能会很有用。我是根据先前的答案得出的。
|
![]() |
8
1
我同意LennartRegebro的观点,但我经常发现缓存一些函数调用、可调用对象和/或Flyweight对象很有用,因为它们可能使用关键字参数。
但如果你真的想要,试试看
|
![]() |
July · 如何定义数字间隔,然后四舍五入 1 年前 |
![]() |
user026 · 如何根据特定窗口的平均值(行数)创建新列? 1 年前 |
|
Ashok Shrestha · 需要追踪特定的颜色线并获取坐标 1 年前 |
![]() |
Nicote Ool · 在FastApi和Vue3中获得422 1 年前 |
|
Abdulaziz · 如何对集合内的列表进行排序[重复] 1 年前 |
![]() |
asmgx · 为什么合并数据帧不能按照python中的预期方式工作 1 年前 |