循环使用列表推导

时间:2019-04-17 21:38:08

标签: python

为简化我的工作:

我有50名员工,每人可完成40个任务。

我有一个要从SQL表中读取的数据框,该框要筛选为分数等于10的任务,然后将其分配给每位员工,以便他们拥有完整的“篮子”或工作量。我想为每个员工分配一项任务,然后进行迭代直到完成。

我的最终输出看起来像一个列表,每个列表都基于位置,表示员工编号和分配给他们的任务。

final_basket = [[task1, task2,...] , [task8, task11], ...[task45,task4]]

最后一个购物篮中的每个列表都将与一名员工相对应,例如:

final_basket[0] = [task1, task2,...]将是第一位员工的全部任务。

我可以为每个受雇的员工分配任务,但是我不得不重新分配所有员工以填补他们的能力。

def basket_builder(i):
    agent_basket = [[ ] for basket in range(40)] #define empty basket for all 40 agents 
    score_10 = base_data_1_mo[base_data_1_mo.case_score == 10] #filter data to score 10 only 
    score_10 = score_10[['investigation_id']] #select only investigation id df 
    score_10 = score_10.sort_index() ##sort by index asc 
    for i in range(40):
        investigation_id = score_10.iloc[0]['investigation_id']
        agent_basket[i].append(investigation_id)
        index_drop_v2 = score_10[score_10.investigation_id == investigation_id].index[0]
        score_10 = score_10.drop([index_drop_v2])
        return final_basket

for i in range(40):
    final_basket = []
    final_basket = [[basket_builder(i) for agent in agent_basket[i]] 

final_basket

由于我进行了一些修改以使用函数尝试在此处循环,所以即使打印final_Basket

,我现在遇到的问题

1 个答案:

答案 0 :(得分:0)

您可以用类似的方法做到这一点吗?

employee_task = {}
for n, task in enumerate(tasks):
   employee_number = n % 50
   if employee_number not in employee_task:
      employee_task[employee_number] = []
   employee_task[employee_number].append(task)

并检查每个员工完成的任务少于40个的后验