python - 测试多组成员资格的更好方法?
问题描述
我这里的代码很糟糕,有没有改进它的pythonic方法?
我有三套:
set1 = {1,2,3}
set2 = {2,3,4}
set3 = {4,5,6}
和一个组合集
combined = set1 | set2 | set3
我需要一个 dict 来返回每个集合是否有一个数字。
例如
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()
}
在这里,我们可以轻松地更改集合(或它们的名称),从而例如使用更多/其他集合。
推荐阅读
- reactjs - 再次访问屏幕时 React Native Expo 重置 webview
- c# - 如何在 Python3.9 上安装 dotnet clr?
- angular - 如何为 Angular 应用程序生成生产版本
- android - base64文件下载到电容iOS和Android
- python - 在numpy数组中将每行的K个随机非零元素设置为零,矢量化解决方案
- javascript - 如何将二进制文件读入库
- vue.js - 如何使用 VeeValidate 验证由按钮组成的自定义选择组件?
- c# - 添加 WWW-Authenticate 标头会出错
- amazon-web-services - AWS SQS 轮询问题
- javascript - 我使用 Javascript 进行数字时钟项目,我有这个问题,我想每 1 秒调用一次函数,但是 setinterval 不起作用