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

标签 python list class sorting

我需要创建一个程序,其中包含一个创建对象“Food”的类和一个名为“fridge”的列表,其中包含由类“Food”创建的这些对象。

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。以此类推。我被太多的 if 行困住了,我根本无法让它工作。我应该如何处理这个?感谢您的帮助。

最佳答案

为了将其作为列表返回,您首先需要计算出冰箱中的最长保质期。

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]

关于Python - 根据索引对数字列表进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48501023/

相关文章:

python - Django 检查和备用 Docker Compose 文件 : Debug flag not being set?

python - 将元组的 Rust 向量转换为 C 兼容结构

Python-读取文件后数据未附加到列表和缺少字典键

c# - 如何在c#中声明类型

class - 仅在第一次调用变量时才起作用的 Pythonic 方式

python - 在 Python (PIL) 中读取带有损坏 header 的 JPEG

python - RabbitMQ:双向联合代理,如何让所有队列弹出消息?

python - 如何将一个值 append 到列表中的每个元组?

java - 将 List<T> 中的平均值作为单个 T 对象返回

swift - 我有两个 UIViewControllers,我需要比较它们是否是 UIViewController 的同一个子类