gpt4 book ai didi

Python:如何检查一个项目是否被添加到一个集合中,没有 2x(散列,查找)

转载 作者:太空狗 更新时间:2023-10-29 18:05:23 26 4
gpt4 key购买 nike

我想知道是否有一种清晰/简洁的方法可以将某些内容添加到集合中并检查它是否在没有 2x 哈希和查找的情况下添加。

这是你可能会做的,但它有 2x 项目的哈希值

if item not in some_set:  # <-- hash & lookup
some_set.add(item) # <-- hash & lookup, to check the item already is in the set

other_task()

这适用于单个散列和查找,但有点难看。

some_set_len = len(some_set)
some_set.add(item)
if some_set_len != len(some_set):

other_task()

使用 Python 的 set api 有更好的方法吗?

最佳答案

我认为没有内置的方法可以做到这一点。当然,您可以编写自己的函数:

def do_add(s, x):
l = len(s)
s.add(x)
return len(s) != l

s = set()
print(do_add(s, 1))
print(do_add(s, 2))
print(do_add(s, 1))
print(do_add(s, 2))
print(do_add(s, 4))

或者,如果您更喜欢隐晦的单行代码:

def do_add(s, x):
return len(s) != (s.add(x) or len(s))

(这依赖于从左到右的评估顺序以及 set.add() 总是返回 None 的事实,这是错误的。)

除此之外,只有当双重哈希/查找明显是性能瓶颈时,我才会考虑这样做并且如果使用函数明显更快。

关于Python:如何检查一个项目是否被添加到一个集合中,没有 2x(散列,查找),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27427067/

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