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