Python-根据索引对数字列表进行排序

我需要创建一个程序,该程序具有创建对象“食物”的类和包含“冰箱”的列表的列表,其中包含由“食物”类创建的这些对象.

class Food:
    def __init__(self, name, expiration):
        self.name = name
        self.expiration = expiration


fridge = [Food("beer",4), Food("steak",1),  Food("hamburger",1),  Food("donut",3),]

这并不难.然后,我创建了一个函数,该函数为您提供了具有最高到期号的食物.

def exp(fridge):
    expList=[]
    xen = 0
    for i in range(0,len(fridge)):
        expList.append(fridge[xen].expiration)
        xen += 1
    print(expList)
    sortedList = sorted(expList)
    return sortedList.pop()

exp(fridge)

这也是可行的,现在我必须创建一个返回列表的函数,该列表的索引为有效期,该索引的编号为该有效期的食物数量.
输出应如下所示:[0,2,1,1]-第一个索引0表示没有食物的有效期为“ 0”.索引1表示剩余2天的食物还有1天.依此类推.我受够了,如果行,我根本无法使这一行.我应该如何处理?谢谢您的帮助.

解决方法:

为了将其作为列表返回,您首先需要弄清楚冰箱中的最大失效日期.

max_expiration = max(food.expiration for food in fridge) +1 # need +1 since 0 is also a possible expiration
exp_list = [0] * max_expiration
for food in fridge:
    exp_list[food.expiration] += 1
print(exp_list)

返回[0,2,0,1,1]

上一篇:CodeGo.net>如何按值排序一个JObject


下一篇:python-根据0级索引对多索引Pandas DataFrame的1级索引进行自定义排序