【发布时间】:2018-06-01 17:54:53
【问题描述】:
我正在使用一个包含 (position, name) 形式的元组的集合,并且需要检查名称的集合中是否已经存在一个值,同时忽略位置。
有没有一种方法可以使用类似于value in my_set 的in 运算符,在比较期间忽略元组中的位置变量,但仍然检索它?类似于 (_, value) in my_set 或 (*, value) in my_set) 的东西,但它们不起作用,第一个返回不正确的值,第二个引发 SyntaxError。
显然,我可以使用循环或生成器理解,如value in (tup[1] for tup in my_set),但这不会从该元组中检索位置变量,我很好奇是否有某种形式的单行理解可以做到这一点。
【问题讨论】:
-
if val in [name for (position, name) in my_set]: -
@Sam 如果我只是检查集合中是否存在 val,这将起作用,但我想检查集合中是否存在
val,然后从集合中检索该值。不知道我解释清楚了没有。 -
@PatrickArtner 我正在使用 GUI 中的列表视图,因此我将数据存储在列表中,并且正在玩弄使用集合来停止重复,这引发了这个问题.但我想得越多,用字典做可能更有意义,只做
contents.keys()。