首页 > 解决方案 > 如何获取嵌套列表中的最大值?

问题描述

我试图获取MAX此列表中每个“国家”的价格。

my_list = [
    ['Morocco', 'Fish', datetime.datetime(2020, 11, 17, 0, 0),'0,012'], 
    ['Morocco', 'Fish', datetime.datetime(2020, 11, 17, 0, 0),'0,153'], 
    ['Morocco', 'Fish', datetime.datetime(2020, 11, 17, 0, 0), '0,114'],
    ['Morocco', 'Fish', datetime.datetime(2020, 11, 17, 0, 0), '0,109'],
    ['Morocco', 'Fish', datetime.datetime(2020, 11, 17, 0, 0), '0,252'],
    ['Spain', 'Fish', datetime.datetime(2020, 11, 17, 0, 0), '0,012'], 
    ['Spain', 'Fish', datetime.datetime(2020, 11, 17, 0, 0), '0,113'], 
    ['Spain', 'Fish', datetime.datetime(2020, 11, 17, 0, 0), '0,116'],
    ['Spain', 'Fish', datetime.datetime(2020, 11, 17, 0, 0), '0,250'],
    ['Spain', 'Fish', datetime.datetime(2020, 11, 17, 0, 0), '0,266'],
    ['Italy', 'Fish', datetime.datetime(2020, 11, 17, 0, 0), '0,112'], 
    ['Italy', 'Fish', datetime.datetime(2020, 11, 17, 0, 0), '0,025'], 
    ['Italy', 'Fish', datetime.datetime(2020, 11, 17, 0, 0), '0,224'],
    ['Italy', 'Fish', datetime.datetime(2020, 11, 17, 0, 0), '0,256'],
    ['Italy', 'Fish', datetime.datetime(2020, 11, 17, 0, 0), '0,245']]

这是我的代码:

  max_price_per_list = []
  for lst in my_list:
      for price in lst:
          max_value = price[-1]
          max_price_per_list.append(max_value)
  print(max_price_per_list)

我收到以下错误:TypeError: 'datetime.datetime' object is not subscriptable

当我 printend 时,我期望得到以下结果max_price_per_list

['0,252', '0,266', '0,256']
   

标签: pythonlistmax

解决方案


您可以省略第二个循环以获取所需的列表。

max_price_per_list = []
for lst in my_list:
    max_value = lst[-1]
    max_price_per_list.append(max_value)
print(max_price_per_list)

但是,如果您想获得每个国家/地区的最大值,我建议您使用该pandas软件包。您可以使用以下代码获取列表中每个国家/地区的最高价格:

import pandas as pd
df = pd.DataFrame(my_list)
df.groupby(0).max()

>>>            1          2      3
    0                                     
    Italy    Fish 2020-11-17  0,256
    Morocco  Fish 2020-11-17  0,252
    Spain    Fish 2020-11-17  0,266

推荐阅读