如何使用python找到最大的超集

时间:2017-12-01 15:32:34

标签: python python-3.x

我正在尝试使用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'}

0 个答案:

没有答案