gpt4 book ai didi

Python:根据键从集合中获取项目

转载 作者:太空宇宙 更新时间:2023-11-03 12:24:16 25 4
gpt4 key购买 nike

我有一个带有自定义哈希方法的类。

class Test(object):

def __init__(self, key, value):
self.key = key # key is unique
self.value = value

def __hash__(self):
# 'value' is unhashable, so return the hash of 'key'
return hash(self.key)

我使用此类的对象创建了一个集合

t0, t1, t2 = Test(0, 10), Test(1, 5), Test(2, 10)
s = set([t0, t1, t2])

现在,有什么方法可以使用 keys 中找到对象吗?即我想做:

find_using_key(s, 1) # should return [t1]

我知道我可以通过迭代集合中的项目来做到这一点,但我觉得应该有一个 O(1) 方法来做到这一点,因为 key 有效地确定了“位置” 集合

最佳答案

... since key effectively determines the 'position' in the set

事实并非如此。具有相同 key 的两个元素可以在集合中共存:

>>> t0, t1 = Test(1,1), Test(1,2)
>>> len(set((t0,t1)))
2

哈希值没有定义相等性。这也是不可能的,因为您可能会发生哈希冲突。

现在关于你的问题:不要使用set。它由具有操作插入查找 的抽象接口(interface)定义。它不提供您想要的操作。潜在的底层实现在理论上是否可以支持您想要的操作并不真正相关。相反,使用 dict,并将键与实例相关联。

关于Python:根据键从集合中获取项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22386287/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com