Как изменить порядок списков в python, чтобы они соответствовали заранее определенному порядку

#list

Вопрос:

Я хочу создать приложение для составления списка покупок на заказ с использованием python. Я хочу, чтобы приложение давало мне список товаров в порядке их расположения, когда я хожу по своему магазину.

Как написать код на python, который переупорядочивает список так, чтобы элементы отображались в специально заданном порядке.

Например, если бы в мои покупки входили: яйца, молоко, бекон, хлеб, помидоры. Я хочу написать код так, чтобы независимо от того, что я ввожу в список, вывод всегда сортировался так, чтобы при печати списка хлеб был первым, помидоры-вторым и т. Д.

Ответ №1:

Робин, добро пожаловать на Stack Exchange. Вот подход (я оставлю код вам): Создайте словарь, который сопоставляет товары в их порядке в магазине. Затем, получив список покупок, отсортируйте его на основе значений словаря для элементов в списке.

Ответ №2:

Это зависит от того, знаете ли вы, что всегда будет в вашем списке (всегда ли будут одни и те же пункты).

Если бы вы знали, вы могли бы использовать словарь, чтобы связать каждый известный элемент с его индексом в списке. Например:

 shoppingorder = {"bread":0, "tomatoes":1}    #The number is the index for the item
   
shoppinglist = []
shoppinglist.insert(shoppingorder["bread"], "bread")
 

Вы также можете объединить это с вводом:

 item = input("Please enter a shopping item")
for x in range(len(shoppingorder)):
    shoppinglist.append("") #To avoid index errors

if item in shoppingorder:
    shoppinglist.insert(shoppingorder[item], item)
else:
    print(item   " is not in the list of valid items!")
 

Если вы не знаете товары или их заказы, вам нужно будет попросить пользователя указать индекс для товара при вводе и сохранить его в словаре:

 shoppingorder = {}
shoppinglist = []

item = input("Enter the item")
order= int(input("Enter the position in the list"))

shoppingorder[item] = order

 

Приведенный выше код очень прост, и вам нужно будет самостоятельно добавить обработку ошибок, обработку дубликатов и надлежащие инструменты ввода по мере необходимости.