gpt4 book ai didi

python - 是否有任何带有 key 参数的 set() Python 实现?

转载 作者:太空宇宙 更新时间:2023-11-04 07:53:43 27 4
gpt4 key购买 nike

问题

我想知道是否有任何 python 函数使用 key 参数实现 set(),类似于例如sorted(iterable, *, key=None, reverse=False) 中的 key?

我认为此功能在某些情况下会很有用,尤其是在无需更改其 hash() 函数的情况下比较自定义对象时。

期望的效果

示例 1

iterable = [1.0, 1.5, 2.0, 2.5]
x = set(iterable) # yields {1.0, 1.5, 2.0, 2.5}
y = set(iterable, key=math.floor) # yields {1.0, 2.0}

示例 2

iterable = ['abc', 'ade', 'bbc', 'abc', 'bfg']
x = set(iterable) # yields {'abc', 'ade', 'bbc', 'bfg'}
y = set(iterable, key=lambda x: x[0]) # yields {'abc', 'bbc'}

选择哪个

我可以想象这不会实现,因为如果找到重复项,则很难选择选择哪个对象。然而,这可以通过一些策略来克服,例如'先选择', '随机选择', '最后选择'。

回答

感谢您的所有回复,Daniel Roseman 提出了针对此问题的最优雅的解决方案:

key = math.floor # Or any desired key function
y = set({key(i): i for i in iterable}.values())

最佳答案

这不就是一本字典吗,其中的键是将函数应用于值的结果?

y = {math.floor(i): i for i in iterable}

关于python - 是否有任何带有 key 参数的 set() Python 实现?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51635177/

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