不能 return 具有 python 函数所需顺序的列表

can't return a list with desired order from a python function

想写一段代码,按照以下顺序将 my_order 的项目添加到 burgerlist:burgerlist 的第一个和最后一个元素应该是面包,第二个和最后一个元素应该是蛋黄酱(如果存在的话)在调用函数时的参数中),然后是牛肉/鸡肉,然后是蔬菜。 请帮助了解此处要更改的内容

def my_odrer(*g):
    ingredients = [['long_bread', 'circle_bread'], ['mayonnaise', 'ketchup'], ['beef', 'chicken'],
                   ['cucumber', 'tomato', 'onion']]

    burgerlist = []
    for i in g:

        if i in ingredients[0]:
            burgerlist.insert(0, i)
        elif i in ingredients[1]:
            burgerlist.insert(1, i)
        elif i in ingredients[2]:
            burgerlist.append(i)
        elif i in ingredients[3]:
            burgerlist.append(i)

    if burgerlist[1] == 'mayonnaise':
        burgerlist.append(burgerlist[1])

    burgerlist.append(burgerlist[0])

    return burgerlist


print(my_odrer('circle_bread', 'beef', 'tomato', 'mayonnaise', 'ketchup'))

输出为:['circle_bread', 'ketchup', 'mayonnaise', 'beef', 'tomato', 'circle_bread']

但我想得到:['circle_bread', 'mayonnaise', 'ketchup', 'beef', 'tomato','mayonnaise', 'circle_bread']

创建 3 个列表,其中包含应位于开头、中间和结尾的成分。然后将它们连接起来以产生最终结果。

def my_odrer(*g):
    breads = {'long_bread', 'circle_bread'}
    condiments = {'ketchup'} # mayonnaise not included, since it's handled specially
    meats = {'beef', 'chicken'}
    vegetables = {'cucumber', 'tomato', 'onion'}

    beginning = []
    middle = []
    end = []

    for item in g:
        if item in breads:
            beginning.append(item)
            end.append(item)

    if "mayonnaise" in g:
        beginning.append("mayonnaise")
        end.insert(-1, "mayonnaise")

    for item in g:
        if item in condiments:
            middle.append(item)
    for item in g:
        if item in meats:
            middle.append(item)
    for item in g:
        if item in vegetables:
            middle.append(item)

    return beginning + middle + end

我在你最后的 if 语句中添加了一个附加条件后,它起作用了。

def my_odrer(*g):
ingredients = [['long_bread', 'circle_bread'], ['mayonnaise', 'ketchup'], ['beef', 'chicken'],
               ['cucumber', 'tomato', 'onion']]

burgerlist = []
for i in g:

    if i in ingredients[0]:
        burgerlist.insert(0, i)
    elif i in ingredients[1]:
        burgerlist.insert(1, i)
    elif i in ingredients[2]:
        burgerlist.append(i)
    elif i in ingredients[3]:
        burgerlist.append(i)

if burgerlist[1] == 'mayonnaise':
    burgerlist.append(burgerlist[1])
elif burgerlist[2] == 'mayonnaise':
    burgerlist[1], burgerlist[2] = burgerlist[2], burgerlist[1]
    burgerlist.append(burgerlist[1])

burgerlist.append(burgerlist[0])

return burgerlist