如何从 any() 函数中获取变量

how to get the variable from an any() function

我正在寻找满足条件的 list_select 变量并在下一行追加。

如何在 list_select.append(dupe) 行中提供此功能?

if any(list_select in dupe for list_select in pattern_dict):
   list_select.append(dupe)

您不能使用 any,它只是 returns 一个布尔值。请改用生成器表达式:

gen = (x for x in pattern_dict if x in dupe)
list_select = next(gen, None)
if list_select is not None:
    ...

any 函数应该 return 一个布尔值,所以如果你想要 return 第一次匹配的行为略有不同,请编写一个具有该行为的函数:

def first(seq):
    return next(iter(seq), None)

用法:

>>> first( i for i in range(10) if i**2 > 10 )
4
>>> first( c for c in 'Hello, world!' if c.islower() )
'e'
>>> first( i for i in range(10) if i == 100 ) is None
True

要在您的示例中使用,您可以这样写:

list_select = first( x for x in pattern_dict if x in dupe )
if list_select is not None:
    list_select.append(dupe)

如果您使用的是 Python 3.8 或更高版本,可怕的 "walrus" operator 允许更直接的解决方案:

if any((list_select := x) in dupe for x in pattern_dict):
    list_select.append(dupe)

这种情况恰好是one of the motivating examples引入海象算子