#python #dictionary
#python #словарь
Вопрос:
У меня ситуация, когда возможны замены элементов. Скажем:
mapping = {904:905, 905:906}
Существует фрейм данных, в котором у меня есть количества для каждого из элементов, описанных выше. Если фрейм данных такой, как показано ниже:
904 0kg
905 10kg
906 15kg
когда 904
есть 0
, я хочу, чтобы функция получала сопоставленное значение 904
, которое равно 905
(10 кг)
если 905
также имеет 0kg
значение, то функция должна получить 906
( 15kg
)
до сих пор я пробовал, как показано ниже
mapping={904:905,905:906}
map=mapping[904]
on_hand_qty = oh_df['ON_HAND'][oh_df['WH_ITEM_CODE']==904].values
print(on_hand_qty)
if on_hand_qty==0:
on_hand_qty=oh_df['ON_HAND'][oh_df['WH_ITEM_CODE']==map].values
print(on_hand_qty)
Я хочу, чтобы это условие if выполнялось до тех пор, пока on_hand_qty не равно нулю
Комментарии:
1. хорошо, можете ли вы показать нам свой код, который у вас есть на данный момент?
2. В чем ваш вопрос и что вы пытаетесь сделать? Почему 904 0kg? Это тоже в dict? В какой части 904 0? Это тоже в еще одном dict? Означает ли 0 0kg или что-то еще? Самое главное, что вы пробовали до сих пор и с какой конкретной проблемой вы столкнулись и нуждаетесь в помощи?
3. 904 0kg — это ситуация, когда элемент 904 имеет ненулевое значение, мне не нужно запускать код. Когда элемент имеет значение 0 кг, я хочу использовать сопоставление и получить значение из сопоставленного элемента. в этом случае я бы получил отображение 904, которое равно 905, и значение должно быть обновлено до 10 кг.
4. Возможно, вы ищете
while
цикл?5. может
while
ли цикл решить эту задачу? Я попробую. спасибо за это предположение
Ответ №1:
while on_hand_qty==0:
on_hand_qty=oh_df['ON_HAND'][oh_df['WH_ITEM_CODE']==x].values
print(on_hand_qty)
if on_hand_qty>0:
break
else:
x=mapping[x]
Это решило проблему.