Продолжая вопрос из этого поста здесь , у меня есть два неупорядоченных списка, и я хотел бы выяснить, равны ли они, принимая во внимание дубликаты и не заботясь о порядке. И если они не равны, чтобы найти, какие элементы из какого списка не входят в другой.
Взяв пример из поста, упомянутого выше, предполагая, что список слева от знака равенства - это L1 и список справа L2,
L1 L2
['one', 'two', 'three'] == ['one', 'two', 'three'] : true
['one', 'two', 'three'] == ['one', 'three', 'two'] : true
['one', 'two', 'three'] == ['one', 'two', 'three', 'three'] : false, L1:'three'
['one', 'two', 'three'] == ['one', 'two', 'three', 'four'] : false, L1:'four'
['one', 'two', 'three'] == ['one', 'two', 'four'] : false, L1:'four', L2:'three'
['one', 'two', 'three'] == ['one'] : false, L2:'two','three'
Выходные данные не обязательно должны быть такими же, как я изобразил, но в основном я хотел бы знать, являются ли сравнения двух списков истинными или ложными, и если ложным, который элементы в L2 не находятся в L1, а какие элементы в L1 не находятся в L2.
Решение, предоставленное @Katriel, заключалось в использовании функции collections
следующим образом:
import collections
compare = lambda x, y: collections.Counter(x) == collections.Counter(y)
Но он не предоставляет информацию о том, какие элементы не совпадают. Есть ли эффективный способ сделать это в pyspark?