Finding highest value in a dictionary

  • A+

I'm new to programming and currently taking a CSC 110 class. Our assignment is to create a bunch functions that do all sorts of things with some data that is given. I have taken all that data and put it into a dictionary but I'm having some trouble getting the data I want out of it.

Here is my problem:

I have a dictionary that stores a bunch of countries followed by a list that includes their population and GDP. Formatted something like this

{'country': [population, GDP, ...], ...} 

My task is to loop through this and find the country with the highest population or GDP then print:

'The country with the highest population is ' + highCountry+/     ' with a population of ' + format(highPop, ',.0f')+'.') 

In order to do this I wrote this function (this one is specifically for highest population but they all look about the same).

def highestPop(worldInfo):         highPop = worldInfo[next(iter(worldInfo))][0] #Grabs first countries Population         highCountry = next(iter(worldInfo))#Grabs first country in worldInfo          for k,v in worldInfo.items():                 if v[0] > highPop:                     highPop = v[0]                     highCountry = k          return highPop,highCountry 

While this is working for me I gotta think there is an easier way to do this. Also I'm not 100% sure how [next(iter(worldInfo))] works. Does this just grab the first value it sees?

Thanks for your help in advance!

Edit: Sorry I guess I wasn't clear. I need to pass the countries population but also the countries name. So I can print both of them in my main function.


I think you're looking for this:

max(worldInfo.items(), key=lambda x: x[1][0]) 

This will return both the country name and its info. For instance:

('france', [100, 22]) 

The next() and iter() functions are for python iterators. For example:

mytuple = ("apple", "banana", "cherry") myit = iter(mytuple)  print(next(myit)) #=> apple print(next(myit)) #=> banana print(next(myit)) #=> cherry 


:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: