'Select item from a list like random.choice() does, but not randomly
I know this might be a silly question. But on this notebook there is the following piece of code:
import random
assignments_to_add = []
for _, row in routes.iterrows():
worker = random.choice(workers)
workers.remove(worker)
route_stops = stops.loc[(stops['RouteName'] == row["RouteName"]) & stops['globalid'].notnull()]
for _, stop in route_stops.iterrows():
assignments_to_add.append(workforce.Assignment(
project,
assignment_type="Inspection",
location=stop["name"],
status="assigned",
worker=worker,
assigned_date=datetime.now(),
due_date=stop["DepartTime"],
geometry=stop["SHAPE"]
))
assignments = project.assignments.batch_add(assignments_to_add)
The workers in worker = random.choice(workers)
is a list. So, I cant find the way to not make it random
. I want the code to pick the item of the list in order as it is on the list. How could I do this?
Thanks
Solution 1:[1]
You have a few options for this.
List indexing:
worker = workers[0]
del workers[0]
.pop()
:
worker = workers.pop(0)
# pop removes item from list and assigns to worker
next()
:
#convert list to iterator
w_iter = iter(workers)
# anytime you need the next worker, call the following line
worker = next(workers)
Also consider looping through workers:
for worker in workers:
do_something()
Maybe the easiest for you:
for i, row in routes.iterrows():
worker = workers[i]
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
Solution | Source |
---|---|
Solution 1 | blackbrandt |