【问题标题】:Comparing column sets in pyspark比较pyspark中的列集
【发布时间】:2019-03-07 10:36:37
【问题描述】:

我有两个列列表,例如列表 A 和列表 B。 ListB 是 listA 的子集。

我想检查 listB 中的所有列是否都存在于 listA 中,并在此比较的基础上进行一些操作。

有没有我们可以做同样的选择。

提前致谢。

【问题讨论】:

  • 嗨@Yogesh Sharma,您能否在您的问题中添加代码sn-p,以便我们知道您想要实现的目标以及您正在努力实现的目标。
  • @Yogesh Sharma 我的回答对你有帮助吗?

标签: python-3.x algorithm list pyspark


【解决方案1】:

这不是 pyspark 问题,而是 python 问题:

选项 1:为此开发一个基本功能。这个想法是,一旦 listA 的元素被证明不包含在 listB 中,您就立即停止搜索。

def containsAllOf(listA, listB):
    for (e in listA):
        if (!listB.contains(e)):
            return false
    return true

这个解决方案也可以这样写(它更优雅,但如果给定列表不包含在第二个选项中,第一个选项可能会更快地告诉你)。

def containsAllOf(listA, listB):
    len([x for x in listA if x in listB]) == len(listA)

选项 2:使用 pyton 函数(集合论)。思路:如果listA内连接listB == listA,那么listA的所有元素肯定都包含在listB中。

def containsAllOf(listA, listB):
    length(list(set(listA) & set(listB))) == length(listA)

我不确定哪个选项最适合您,您需要进行测试。这取决于两个列表的大小。但是第一个选项已经具有相当不错的算法复杂度 O(n)。第二个预测起来有点复杂,但它可能是 O(n log(n)),具体取决于 Python 中合并两个集合的底层复杂性。

如果这解决了您的问题,请不要犹豫,点赞。

【讨论】:

    猜你喜欢
    • 2016-10-07
    • 1970-01-01
    • 2020-06-17
    • 2020-01-30
    • 2017-07-30
    • 2020-09-28
    • 2021-03-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多