Вы можете только отсортировать ключи (или элементы или значения) словаря в отдельный список (как я писал много лет назад в рецепте, который цитирует @ Эндрю). Например, для сортировки ключей по заданным вами критериям:
promotion_items = {
'one': {'remaining_pcs': 100, 'discount_ratio': 10},
'two': {'remaining_pcs': 200, 'discount_ratio': 20},
}
def bypcs(k):
return promotion_items[k]['remaining_pcs']
byrempcs = sorted(promotion_items, key=bypcs)
def bydra(k):
return promotion_items[k]['discount_ratio']
bydiscra = sorted(promotion_items, key=bydra)