擅长:python、mysql、java
<p>我对代码的主要评论是,您可以自由地更改外部三个<code>for</code>循环的顺序,因为您正在执行的操作并不取决于您在这些循环上的顺序(因为在查找匹配项时,您不会中断任何循环),并且假设是这样,只在<code>jobs</code>循环中到达与<code>jobs</code>值无关的<code>if</code>语句是没有意义的。将<code>jobs</code>循环放在另外两个循环内会更有效,这样它也可以放在<code>if</code>内,也就是说,循环只针对<code>employee</code>和<code>nemployee</code>值的组合执行,其中<code>if</code>条件计算<code>True</code></p>
<p>除此之外,但不太重要的是,如果在执行此重排后存在连续的<code>for</code>语句(在独立的iterables上),则可以使用<code>itertools.product</code>迭代器上的单个循环替换它们,以减少<code>for</code>循环嵌套的深度(如果愿意的话)(将其从四个显式循环减少到两个显式循环):</p>
<pre><code>from itertools import product
for employee, nemployee in product(get_employees, employee_comps):
if nemployee['employee_id'] == employee['id']:
for jobs, njob in product(employee['jobs'],
nemployee['hourly_compensations']):
if njob['job_id'] == jobs['id']:
njob['rate'] = jobs['rate']
</code></pre>