查找列表列表中{n个}列表中显示的元素

时间:2015-09-15 16:34:04

标签: python list

我正在制作个人代码,为研究分析做一些事情。 我有一个包含14个列表的列表列表,我想找到至少10个列表之间共享的元素。这是我到目前为止在所有列表中找到共享元素的内容。我还写了一个输出,如果一个元素出现大于10次,这对我的目的不起作用,因为列表列表中的某些列表具有相同值的倍数。下面是我的示例代码。

  def find_duplicates(master_list):
    result = set(master_list[0])
    for organism in master_list[1:]:
        result.intersection_update(organism)
    x = list(result)
    with open("duplicates.txt", "wt") as t:
        for a in x:
            t.write(a + "\n")  

第二版

def find_duplicates(master):
    new = []
    for organism in master:
        for feature in organism:
            if sum(organism.count(feature) for organism in master) == 10:
                if y not in new:
                   new.append(y)
   with open("duplicates_list.txt", "wt") as t:
     for a in new:
        t.write(a + "\n")

有没有人对如何修改此内容以查找列表列表中至少10个列表中的元素有任何建议。

1 个答案:

答案 0 :(得分:2)

如果订单无关紧要,您可以使用Counter dict进行计数,在每个子列表上调用set以获得唯一值:

from collections import Counter
def find_duplicates(master):
    cn = Counter(feature for organism in master for feature in set(organism))
    with open("duplicates_list.txt", "wt") as t:
      for k,v in cn.items():
         if v >= 10:
             t.write("{}\n".format(k))

对于v,即计数至少为10,将会有至少10个具有set(organism)特定功能的子列表,即使某个功能出现的次数超过一次,我们也只会看到一次我们的套装不能重复。