python - 基于字符串方法的Python集合的子集

标签 python python-3.x set

给定以下集合:

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

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

例如,以下应用于一个字符串,如果它们可以应用于整个集合,将提取不同的子集:

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

我有独特的无序列表,即集合,并且想知道是否可以在 Python 集合上整齐地执行这种操作,这样我就可以避免编写列表推导式。

最佳答案

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

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))

如果易读性不是一个选项,您可以使用设置解包:{*iterable}

因此方法可能如下所示:

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

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

关于python - 基于字符串方法的Python集合的子集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54830665/

相关文章:

python - 如何在 Spacy 中训练具有不同波束目标参数的 NER 模型?

python - 解析 JSON 时处理 KeyError

c# - 如何使用 linq lambda 语法查找具有精确长度的子集

python - Unicode 字符渲染

python - 如何获取当前的 PyInterpreterState?

Python 更新字典值以引用具有相同名称的数据帧

python - GTK - Python Treeview 列重新排序警告

listview - 如何上下移动多个ListStore元素

Java API - EntrySet() 上的死胡同

python - 理解 set() 函数