Python Max函数-在字典中查找最大值

时间:2019-02-28 13:11:09

标签: python lambda max

我的问题是关于使用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],则确实会提供与最大值相关的最高键,但不会返回我希望达到的最大值本身。

任何帮助将不胜感激。

4 个答案:

答案 0 :(得分:2)

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

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())

答案 1 :(得分:1)

怎么样呢?

print max(cc_GDP.values())

这将为您提供最高的价值,但不会给钥匙。

答案 2 :(得分:1)

造成该错误的原因是,您需要查看整个词典,而不仅仅是一本。删除[1],然后使用以下行:

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

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

答案 3 :(得分:0)

您可以部署.items()的{​​{1}}方法来获取dict对(key-value s)并按照以下方式进行处理:

tuple

在这种情况下,输出cc_GDP = {'af': 1243738953, 'as': 343435646} m = max(list(cc_GDP.items()), key=lambda x:x[1]) print(m) #prints ('af', 1243738953) 是2-m,您可以通过tuple访问键'af',并通过m[0]来访问值1243738953