如何使用Python找到最大的超级集合

2024-06-08 08:48:52 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图用Python从一些集合中找到最伟大的超集。然而,最大的超集可能不是一个,所以我想知道如何编写代码。例如,如何编写一个代码从下面的集合中搜索最大的超集?你知道吗

# sample sets (dict format)
sample = {
    "mammalian" : set(['dog', 'cat', 'horse']),
    "bird" : set(['hawk', 'sparrow', 'pigeon']),
    "animal" : set(['dog', 'cat', 'horse', 'hawk', 'sparrow', 'pigeon']),
    "fruits" : set(['apple', 'strawberry']),
    "grain" : set(['corn', 'wheat', 'rice']),
    "plant" : set(['apple', 'strawberry', 'corn', 'wheat', 'rice'])

在这种情况下,最伟大的超集是“动物”和“植物”。我曾经这样写过代码,但是我觉得我的代码一点都不pythonic。请给我一些建议或意见,以改善我的代码。你知道吗

谢谢。你知道吗

# my code
keys = list(sample.keys())

candidate = []
candidate.append(keys[0]) 
for competitor in sample:
    comp_set = sample[competitor]
    flag = True
    for i in range(len(candidate)):
        cand_set = candidate[i]

        if cand_set >= comp_set:
            flag = False
        elif comp_set >= cand_set:
            candidate[i] = competitor
            flag = False
        elif flag and (i == len(candidate)-1):
            candidate.append(competitor)

candidate = set(candidate)

print(candidate) # {'plant', 'animal'}

Tags: sample代码keyscandidatecatflagdogset