我正在制作个人代码,为研究分析做一些事情。 我有一个包含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个列表中的元素有任何建议。
答案 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)
特定功能的子列表,即使某个功能出现的次数超过一次,我们也只会看到一次我们的套装不能重复。