После выполнения некоторых операций я получаю 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')
Все это мне не помогает
3 ответа
Это так просто:
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())
Как насчет result = result if result[0] != 'A_String_0' else result[1:]
?
Похоже, вы используете список с именем FreqItemset . Однако название предполагает, что вы должны использовать набор вместо списка .
Таким образом, вы можете получить набор искомых пар строка, частота. Например:
>>> d = { "the": 2, "a": 3 }
>>> d[ "the" ]
2
>>> d[ "the" ] = 4
>>> d[ "a" ]
3
>>> del d[ "a" ]
>>> d
{'the': 4}
Вы можете легко получить доступ к каждому слову (которое является ключом словаря), изменить его значение (частоту появления) или удалить его. Все операции исключают доступ ко всем элементам списка, поскольку это словарь, т. Е. Его производительность хорошая (во всяком случае, лучше, чем использование списка).
Просто мои два цента.
Похожие вопросы
Новые вопросы
python
Python - это многопарадигмальный, динамически типизированный, многоцелевой язык программирования. Он разработан для быстрого изучения, понимания и использования, а также для обеспечения чистого и единообразного синтаксиса. Обратите внимание, что Python 2 официально не поддерживается с 01.01.2020. Тем не менее, для вопросов о Python, связанных с версией, добавьте тег [python-2.7] или [python-3.x]. При использовании варианта Python (например, Jython, PyPy) или библиотеки (например, Pandas и NumPy) включите его в теги.