我会给你我的具体例子,但这是一个普遍的python问题。
我有一个apscheduler作业对象列表Link我试图找出从我的apscheduler作业列表中获取apscheduler作业属性列表'kwargs'的最有效方法。
我知道我可以遍历整个列表并创建一个新的kwargs列表,但我想知道是否有更高效/更清晰的方法在python中执行此操作,因为我是新手。谢谢!
from apscheduler.scheduler import Scheduler
schedule = Scheduler()
jobs = schedule.get_jobs() #jobs is a list of apscheduler jobs
jobs_kwargs = ???
答案 0 :(得分:1)
嗯,你几乎说过:
jobs = schedule.get_jobs()
jobs_kwargs = [j.kwargs for j in jobs]
据我所知,实际上并没有“清洁”的方式。
答案 1 :(得分:1)
在同事的帮助下弄明白了。这可以通过使用map:
来完成from apscheduler.scheduler import Scheduler
schedule = Scheduler()
jobs = schedule.get_jobs() #jobs is a list of apscheduler jobs
jobs_kwargs = map(lambda k: k.kwargs, jobs)
这可以更高效,因为它并行处理任务(我仍然需要查看它以获取更多信息)。谢谢你的建议!
答案 2 :(得分:0)
我同意John的观点。
也许是一个建议:
如果您的作业对象都是Schedule类类型,则动态追加到class属性(不是self而是cls),即 kwargs 每当一个作业对象实例化时,每个作业对象都会变成kwargs,这样在任何时候,你可以从那个类属性中读取。通过一种叫做schedule.get_gwargs(cls)的类方法。
但我不确定这会带来什么比简单列表理解更好。