Skip to main content
 首页 » 编程设计

python 2.7 : delete item from list by value

2025年05月04日17linjiqin

执行一些操作后,我得到一个 list 如下:

FreqItemset(items=[u'A_String_0'], freq=303) 
FreqItemset(items=[u'A_String_0', u'Another_String_1'], freq=302) 
FreqItemset(items=[u'B_String_1', u'A_String_0', u'A_OtherString_1'], freq=301) 

我想从列表中删除所有从 A_String_0 开始的项目,但我想保留其他项目(A_String_0 是否存在于项目的中间或末尾无关紧要)

所以在上面的示例中删除第 1 行和第 2 行,保留第 3 行

我试过了

 filter(lambda a: a != 'A_String_0', result) 

和

result.remove('A_String_0') 

这一切对我没有帮助

请您参考如下方法:

就这么简单:

from pyspark.mllib.fpm import FPGrowth 
 
sets = [ 
    FPGrowth.FreqItemset( 
       items=[u'A_String_0'], freq=303), 
    FPGrowth.FreqItemset( 
        items=[u'A_String_0', u'Another_String_1'], freq=302), 
    FPGrowth.FreqItemset( 
        items=[u'B_String_1', u'A_String_0', u'A_OtherString_1'], freq=301) 
] 
 
[x for x in sets if x.items[0] != 'A_String_0'] 
## [FreqItemset(items=['B_String_1', 'A_String_0', 'A_OtherString_1'], freq=301)] 

在实践中最好先过滤再收集:

filtered_sets = (model 
    .freqItemsets() 
    .filter(lambda x: x.items[0] != 'A_String_0') 
    .collect())