簡體   English   中英

Python 2.7:按值從列表中刪除項目

[英]Python 2.7 : delete item from list by value

執行一些操作后,我得到如下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')

所有這些都沒有幫助我

result = result if result[0] != 'A_String_0' else result[1:]如何?

就這么簡單:

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

似乎您正在使用一個名為FreqItemset的列表。 但是,該名稱表明您應該使用set而不是list

這樣,您可以擁有一組可搜索的對字符串,頻率。 例如:

>>> d = { "the": 2, "a": 3 }
>>> d[ "the" ]
2
>>> d[ "the" ] = 4
>>> d[ "a" ]
3
>>> del d[ "a" ]
>>> d
{'the': 4}

您可以輕松地訪問每個單詞(這是詞典的關鍵),更改其值(其出現頻率)或刪除它。 所有操作都避免訪問列表的所有元素,因為它是字典,也就是說,它的性能很好(總之,比使用列表要好)。

只是我的兩分錢。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM