【问题标题】:Selecting element of a list by its subsets通过子集选择列表的元素
【发布时间】:2019-11-22 08:14:31
【问题描述】:

我有以下列表:

t0=[['a'],
 ['a', 'h'],
 ['a', 'd', 'k', 'r', 'v'],
 ['a', 'b', 'c', 'k'],
 ['a', 'b', 'c', 's', 'u'],
 ['a', 'b', 'f', 't'],
 ['a', 'b', 'e', 'l', 'n', 'o'],
 ['a', 'b', 'd', 'n', 'o'],
 ['a', 'b', 'd', 'e', 'n', 'o'],
 ['a', 'b', 'd', 'e', 'm', 'n', 'o', 't']] 

t1=[['a', 'b'], ['a', 'c'], ['a', 'd']]

对于 t1 中的每个元素,我想通过 t0 并选择 t1 是子集的元素,输出应如下所示:

[[["a", "b", "c", "k"], ["a", "b", "c", "s", "u"], ["a", "b", "f", "t"], ["a", "b", "e", "l", "n", "o"], ["a", "b", "d", "n", "o"], ["a", "b", "d", "e", "n", "o"], ["a", "b", "d", "e", "m", "n", "o", "t"]],
 [["a", "b", "c", "k"], ["a", "b", "c", "s", "u"]], 
 [["a", "d", "k", "r", "v"], ["a", "b", "d", "n", "o"], ["a","b", "d", "e", "n", "o"], ["a", "b", "d", "e", "m", "n", "o","t"]]]

例如,第一个元素是['a','b'],因此输出的第一个元素将是 t0 的那些元素,其中['a','b'] 是它们的子集。 我想知道如何编写一个函数来做到这一点?

【问题讨论】:

  • 这只熊猫怎么样?这是一个系列吗?
  • 您可能想展示您的努力并提出与您的方法相关的问题。这里的人可以帮助您解决问题,而不是完全给您解决方案。
  • 我已经添加了标签,以防有人使用 Pandas 解决方案。

标签: python list functional-programming


【解决方案1】:

我想这就是你要找的:

[[j for j in t0 if set(i) <= set(j)] for i in t1]

【讨论】:

    【解决方案2】:

    在 python 2 中你可以这样做:

    map(lambda x: filter(lambda y: set(x) <= set(y), t0), t1 )
    

    在 python 3 中,这将是:

    list(map(lambda x: list(filter(lambda y: set(x) <= set(y), t0)), t1 ))
    

    【讨论】:

      猜你喜欢
      • 2014-07-08
      • 1970-01-01
      • 1970-01-01
      • 2019-04-27
      • 1970-01-01
      • 1970-01-01
      • 2012-01-09
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多