Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/python-2.7/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 2.7 在字符串列表中查找字符串_Python 2.7_Apache Spark_Pyspark - Fatal编程技术网

Python 2.7 在字符串列表中查找字符串

Python 2.7 在字符串列表中查找字符串,python-2.7,apache-spark,pyspark,Python 2.7,Apache Spark,Pyspark,我有一组项目列表frequeitemsets,例如: FreqItemset(items=[u'bbb_1', u'ccc_1', u'ccc_2', u'aaa_1', u'ccc_3'], freq=379) FreqItemset(items=[u'aaa_1_1', u'ccc_1', u'ccc_2', u'ccc_3'], freq=375) ... 我试图在每个frequeitemset中找到一个从aaa 我知道如何在列表的第一个元素中找到aaa filtered_result

我有一组项目列表
frequeitemsets
,例如:

FreqItemset(items=[u'bbb_1', u'ccc_1', u'ccc_2', u'aaa_1', u'ccc_3'], freq=379)
FreqItemset(items=[u'aaa_1_1', u'ccc_1', u'ccc_2', u'ccc_3'], freq=375)
...
我试图在每个
frequeitemset
中找到一个从
aaa

我知道如何在列表的第一个元素中找到
aaa

filtered_result = model.freqItemsets()\
 .filter(lambda x: x.items[0].startswith('aaa_')).collect()
问题是如何在
frequeitemset
的每个元素中找到
aaa

在上面示例的第一行
aaa
第四位的字符串中

我想到了这样的事情:

   filtered_result = model.freqItemsets()\
     .filter(lambda x: x.items[0].startswith('aaa_'))
     .filter(lambda x: x.items[1].startswith('aaa_'))
     .filter(lambda x: x.items[2].startswith('aaa_'))
     ...
     .collect()

这是最有效的方法吗?

因为我没有数据类型
frequeitemset
我只是演示一种使用Python默认数据类型
列表的通用方法:

list_1 = [u'bbb_1', u'ccc_1', u'ccc_2', u'aaa_1', u'ccc_3']
list_2 = [u'aaa_1_1', u'ccc_1', u'ccc_2', u'ccc_3']

results_1 = [s for s in list_1 if s.startswith('aaa')]
results_2 = [s for s in list_2 if s.startswith('aaa')]

print(results_1)
print(results_2)
由于我使用的是Python3,而您使用的似乎是Python2,因此需要将
print(something)
更改为
print something

注:
您可以调整这种通用方法,以减少手动操作,例如迭代列表列表(或者在您的情况下是
frequeitemset
s)。或者将结果写入包含不同频率作为键的字典。

因为我没有数据类型
frequeitemset
我只是演示使用Python默认数据类型
列表的一般方法:

list_1 = [u'bbb_1', u'ccc_1', u'ccc_2', u'aaa_1', u'ccc_3']
list_2 = [u'aaa_1_1', u'ccc_1', u'ccc_2', u'ccc_3']

results_1 = [s for s in list_1 if s.startswith('aaa')]
results_2 = [s for s in list_2 if s.startswith('aaa')]

print(results_1)
print(results_2)
由于我使用的是Python3,而您使用的似乎是Python2,因此需要将
print(something)
更改为
print something

注:
您可以调整这种通用方法,以减少手动操作,例如迭代列表列表(或者在您的情况下是
frequeitemset
s)。或者将结果写入包含不同频率作为键的字典。

如果我理解您的意思是正确的,您希望过滤仅由特定字符串组成的元素。这看起来像是一份工作:

我宁愿将其提取到一个新函数:

def is_good(itemset):
    return all(i.startswith('aaa_') for i in x.items)

itemsets.filter(is_good)

如果我理解您的意思是正确的,那么您希望过滤那些仅由某些字符串组成的元素。这看起来像是一份工作:

我宁愿将其提取到一个新函数:

def is_good(itemset):
    return all(i.startswith('aaa_') for i in x.items)

itemsets.filter(is_good)


那些
项目
不是集合列表。这些是unicode字符串的列表。您知道如何使用“普通”列表(Python的默认数据类型
list
)执行此操作吗?这将是一个结合所谓的
列表理解的起点
@albert如果您知道答案,请提供
项目
不是集合列表。这些是unicode字符串的列表。您知道如何使用“普通”列表(Python的默认数据类型
list
)执行此操作吗?这将是与所谓的
列表理解相结合的一个起点
@albert如果你知道答案,请提供它可能类似于
.filter(s代表items if items.startswith('aaa_'))
?我从未使用过任何
filter()
函数。很抱歉。如果items.startswith('aaa_'),它是否会像
.filter(在items.startswith('aaa_'))中的s一样
?我从未使用过任何
filter()
函数。很抱歉。@berael非常感谢您的回答。不幸的是,我得到了错误:
AttributeError:“list”对象没有属性“startswith”
@Toren已修复,应该是
x.items
在循环中。非常感谢,很好的解决方案!спасибо ! 请修复解决方案:从
all
更改为
any
。那我就投票。干得好。@Toren应用多个过滤器是
操作,因此,它是
all
,而不是
any
all
在我的情况下不起作用,因为它使列表中的所有元素都以
aaa
开头,否则
any
工作,因为列表中的任何元素都可以以
aaa
开头。我已经在我的代码中验证了这一点。@berael非常感谢您的回答。不幸的是,我得到了错误:
AttributeError:“list”对象没有属性“startswith”
@Toren已修复,应该是
x.items
在循环中。非常感谢,很好的解决方案!спасибо ! 请修复解决方案:从
all
更改为
any
。那我就投票。干得好。@Toren应用多个过滤器是
操作,因此,它是
all
,而不是
any
all
在我的情况下不起作用,因为它使列表中的所有元素都以
aaa
开头,否则
any
工作,因为列表中的任何元素都可以以
aaa
开头。我已经在我的代码中验证了这一点。