基于字符串方法的python集的子集

时间:2019-02-22 15:49:41

标签: python python-3.x set

给出以下设置:

s = {"brown", "blue", "Blue", "green", "red", "black"}

如何使用Python字符串方法从中提取子集?

例如,以下内容应用于一个字符串,如果可以应用于整个字符串,则会提取不同的子集:

"brown".startswith("b")
"Blue".lower().startswith("b")
"e" in "green"

我有唯一的无序列表(即集合),并且想知道是否可以在Python集合上整齐地执行这种操作,从而避免编写列表推导。

1 个答案:

答案 0 :(得分:4)

您可能正在寻找像这样的集合理解:

subset = {sub for sub in s if sub.startswith('b')}

这也可以使用filteroperator.methodcaller

完成
from operator import methodcaller as call

subset = set(filter(call('startswith', 'b'), s))

如果没有易读性的选项,则可以使用set unpacking:{*iterable}

所以方法看起来像:

def findall(s, find, meth = 'startswith')
    return {*filter(call(meth, find), s)}

findall(s, 'b')
#{'blue', 'brown', 'black'}