gpt4 book ai didi

python - 忽略元组比较中的值但仍检索它

转载 作者:行者123 更新时间:2023-12-01 09:23:07 25 4
gpt4 key购买 nike

我正在使用一个包含 (position, name) 形式的元组的集合,并且需要检查集合中是否已存在名称的值,同时忽略位置。

有没有一种方法可以使用类似于 value in my_setin 运算符,在比较过程中忽略元组中的位置变量,但仍然检索它?类似于 (_, value) in my_set(*, value) in my_set),但这些不起作用,第一个返回错误的值,而第二次引发语法错误。

显然,我可以使用循环或生成器理解,例如 value in (tup[1] for tup in my_set),但这不会从该元组中检索位置变量,我是很好奇是否有某种形式的单行理解可以做到这一点。

最佳答案

您可以使用现有数据结构(迭代集合)以 O(n) 的时间完成此操作,但对于 O(1) ,您必须更改数据结构。您需要进行查找:

from collections import defaultdict

positions = defaultdict(list)
for position, name in my_set:
positions[name].append(position)

现在这是一个 O(1) 操作:

name in positions

检索每个名称的所有内容:

for pos in positions[name]:
...

如果您希望它与 my_set 保持同步突变,那么您将需要添加用于更新的钩子(Hook) positions同时添加/删除 my_set 。最好完全重新考虑底层数据结构,例如,首先使用字典而不是集合。

关于python - 忽略元组比较中的值但仍检索它,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50648736/

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