我正试图找到一种更具python风格的方法来做下面的事情
for employee in get_employees:
for jobs in employee['jobs']:
for nemployee in employee_comps:
if nemployee['employee_id'] == employee['id']:
for njob in nemployee['hourly_compensations']:
if njob['job_id'] == jobs['id']:
njob['rate'] = jobs['rate']
它可以工作,但看起来很笨重。我是Python新手,如果有其他线程可以帮助我,请指导我
我对代码的主要评论是,您可以自由地更改外部三个
for
循环的顺序,因为您正在执行的操作并不取决于您在这些循环上的顺序(因为在查找匹配项时,您不会中断任何循环),并且假设是这样,只在jobs
循环中到达与jobs
值无关的if
语句是没有意义的。将jobs
循环放在另外两个循环内会更有效,这样它也可以放在if
内,也就是说,循环只针对employee
和nemployee
值的组合执行,其中if
条件计算True
除此之外,但不太重要的是,如果在执行此重排后存在连续的
for
语句(在独立的iterables上),则可以使用itertools.product
迭代器上的单个循环替换它们,以减少for
循环嵌套的深度(如果愿意的话)(将其从四个显式循环减少到两个显式循环):您拥有的代码非常干净,非常符合Python,我建议您继续使用它
如果你想把它放在一行中,这个应该可以工作,但是我没有数据来测试它,所以我不确定
相关问题 更多 >
编程相关推荐