Я написал две функции в Python, которые я собираюсь использовать несколько раз.Вместе они позволят мне рассчитать общее расстояние перемещения транспортного средства на складе, собирая товары из определенных мест в одном проходе.
Одна функция get_orderpick
извлекает два списка из входных данных в dataFrame и возвращает ихв списке, поэтому возвращаемое предложение выглядит так: return [orderList, pickList]
.
Когда я запускаю эту функцию в одиночку, я получаю список с двумя списками, хранящимися внутри нее, без проблем.НО, когда я пытаюсь передать это своей следующей функции, я получаю KeyError.
Итак, как я уже упоминал, первая функция get_orderpick
работает нормально, вот полный код:
def get_orderpick(df):
# Produce a standard Python list of the picks
# DataFrame -> numpy.array -> list
pickList = df.sku.values.tolist()
orderList = df.order.values.tolist()
return [orderList, pickList]
Примечание - orderList
- это последовательность пиков, мне нужно отследить, когда автомобиль должен вернуться на базу и начать все сначала при следующем заказе.Он содержит только цифры;pickList
- отсек, из которого должен производиться выбор, он определяет, как далеко должен проехать автомобиль для каждого выбора, и содержит одну заглавную букву в каждой записи.
Вот функция вычисления расстояния:
def picking_distance(lists, layout):
orderList = lists[1] #<------------------ issue here
pickList = lists[2]
totalDistance = 0 # distance
currentPos = 0 # position
for i in range(len(pickList)):
if orderList[i] == 1 and currentPos != 0:
# new order, return to base
totalDistance += currentPos
currentPos = 0
i -= 1 # begin the pick from base again
else:
nextPos = layout[pickList[i]]
delta = abs(nextPos - currentPos)
totalDistance += delta
currentPos = nextPos
return totalDistance
Я ожидаю, что код выдаст общее пройденное расстояние.Но я получаю KeyError, когда пытаюсь отделить orderList
и pickList
от списка lists
.Я вызываю функции вместе следующим образом:
print(picking_distance(layout, get_orderpick(data)))
Спасибо за вашу помощь!
PS Прохожу через словарь под названием layout
на второмфункция.Это определяет расстояние между местами сбора.