1 回答

TA貢獻1830條經(jīng)驗 獲得超9個贊
我對代碼的主要評論是您可以自由更改外部三個循環(huán)的順序for,因為您正在執(zhí)行的操作不依賴于您循環(huán)這些循環(huán)的順序(因為您沒有打破任何找到匹配項時循環(huán)),并且鑒于這種情況,僅進行循環(huán)jobs以到達if其中獨立于 . 值的語句是沒有意義的jobs。將循環(huán)放在其他兩個循環(huán)內(nèi)會更有效jobs,這樣它也可以在 內(nèi)if,即循環(huán)只對那些值的組合employee和條件求值的nemployee地方執(zhí)行。ifTrue
除此之外但不太重要的是,for在進行此重新排列后有連續(xù)語句(獨立的可迭代對象)時,您可以將它們替換為迭代器上的單個循環(huán), itertools.product以減少循環(huán)嵌套的深度for(如果您愿意)(從四個減少到兩個)顯式循環(huán)):
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']
添加回答
舉報