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