我这里的代码很糟糕,有没有 pythonic 的方法来改进它?
我有三套:
set1 = {1,2,3}
set2 = {2,3,4}
set3 = {4,5,6}
和组合集
combined = set1 | set2 | set3
我需要一个字典来返回一个数字是否是每个集合。
例如
d[2] = {'set1':True, 'set2':True, 'set3':False}
我的代码是这样的:
def in_set(num):
d = {}
if num in set1:
d['set1'] = True
else:
d['set1'] = False
if num in set2:
d['set2'] = True
else:
d['set2'] = False
if num in set3:
d['set3'] = True
else:
d['set3'] = False
return d
最佳答案
您可以通过以下方式简化它:
def in_set(num):
return {
'set1': num in set1,
'set2': num in set2,
'set3': num in set3
}
您甚至可以制作映射到这些集合上的集合名称的字典,然后使用字典理解:
my_sets = {
'set1': set1,
'set2': set2,
'set3': set3
}
def in_set(num):
return {
k: num in v
for k, v in my_sets.items()
}
在这里我们可以轻松更改集合(或它们的名称),因此例如可以使用更多/其他集合。
关于python - 测试多组成员资格的更好方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53308522/