如何从嵌套列表中提取整数值最小的子列表?



如果我有一个嵌套列表,如下所示:

foods = [['Category', 'Carbs', 'Calories'], ['SWEET POTATO', '23.4', '100'], ['TOMATOES', '5.1', '23'], ['BEETS', '16.28', '65'], ['LETTUCE', '2.23', '13']]

我想查找并打印卡路里计数最低的子列表。我尝试了以下方法:

lowcal = foods[0]
for x in foods:
if x[2] < lowcal[2]:
lowcal = x
else:
continue
print (lowcal)

但是我得到了错误的输出,我得到:"['红薯','23.4','100']

当我应该得到: ['生菜', '2.23', '13']

您可以在列表中使用min()并将key作为第三个元素:

min([x for x in foods[1:]], key=lambda x: int(x[2]))

你的问题是你的CarbsCalories的值是字符串(你把它们放在引号里!(,而不是整数。此外,你从lowcal = foods[0]开始,这是你的标题,而不是含有卡路里和碳水化合物的食物。我建议如下:

foods = [
['Category', 'Carbs', 'Calories'],
['SWEET POTATO', '23.4', 100],
['TOMATOES', '5.1', 23],
['BEETS', '16.28', 65],
['LETTUCE', '2.23', 13]
]
lowcal = foods[1]
for x in foods[2:]:
if int(x[2]) < int(lowcal[2]):
lowcal = x
>>> print (lowcal)
['LETTUCE', '2.23', 13]

胜利!希望对您有所帮助,祝您编码愉快!

最新更新