【问题标题】:Python Max function - Finding highest value in a dictionaryPython Max 函数 - 在字典中查找最大值
【发布时间】:2019-02-28 13:11:09
【问题描述】:

我的问题是关于使用 max 函数在字典中查找最大值。

我创建了一个如下所示的字典:

cc_GDP = {'af': 1243738953, 'as': 343435646, etc}

我希望能够简单地找到并打印每个国家/地区的最高 GDP 值。

阅读类似问题后,我的最佳尝试如下(我目前正在阅读 Python 速成课程书,其中已获取此代码的基础,请注意 get_country_code 函数只是为国家/地区提供 2 个字母缩写在 GDP_data json 文件中):

#Load the data into a list
filename = 'gdp_data.json'
with open(filename) as f:
    gdp_data = json.load(f)

cc_GDP` = {}
for gdp_dict in gdp_data:
    if gdp_dict['Year'] == 2016:
        country_name = gdp_dict['Country Name']
        GDP_total = int(gdp_dict['Value'])
        code = get_country_code(country_name)
        if code:
            cc_GDP[code] = int(GDP_total)

print(max(cc_GDP, key=lambda key: cc_GDP[key][1]))

这提供了以下错误'TypeError: 'int' object is not subscriptable'

请注意,如果在打印函数中省略 [1],这确实提供了与最高值相关的最高键,但不会返回我希望实现的最高值本身。

任何帮助将不胜感激。

【问题讨论】:

    标签: python lambda max


    【解决方案1】:

    因此,您当前使用此行提取具有最高值的国家/地区的键:

    country_w_highest_val = max(cc_GDP, key=lambda key: cc_GDP[key]))
    

    你当然可以再查字典:

    highest_val = cc_GDP[contry_w_highest_val]
    

    但更简单,完全忽略键,只查找字典中所有值的最大值:

    highest_val = max(cc_GDP.values())
    

    【讨论】:

      【解决方案2】:

      这样的事情怎么样:

      print max(cc_GDP.values())
      

      这会给你最高的价值,但不是关键。

      【讨论】:

        【解决方案3】:

        错误是因为您需要查看整个字典,而不仅仅是一项。删除[1],然后使用以下行:

        print(cc_GDP[max(cc_GDP, key=lambda key: cc_GDP[key])])
        

        您的代码目前只返回字典键。您需要将此密钥重新插入字典以获取 GDP。

        【讨论】:

          【解决方案4】:

          您可以部署dict.items() 方法以获取key-value 对(tuples)并按以下方式处理:

          cc_GDP = {'af': 1243738953, 'as': 343435646}
          m = max(list(cc_GDP.items()), key=lambda x:x[1])
          print(m) #prints ('af', 1243738953)
          

          在这种情况下,输出 m 是 2-tuple,您可以通过 m[0] 访问密钥 'af',通过 m[1] 访问值 1243738953

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2014-03-21
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2012-09-14
            • 1970-01-01
            • 1970-01-01
            • 2020-07-26
            相关资源
            最近更新 更多