May-14-2021, 03:20 AM
Here's another way to go about it.
tester = {'Afghanistan': {'Gold': 0, 'Silver': 0, 'Bronze': 2, 'Total': 2}, 'Albania': {'Gold': 0, 'Silver': 0, 'Bronze': 0, 'Total': 0}, 'Algeria': {'Gold': 5, 'Silver': 4, 'Bronze': 8, 'Total': 17}} def rank_countries(dict1): if isinstance(dict1, dict): for i in dict1: if isinstance(dict1[i], dict): new_list = [(k, v['Total']) for k, v in dict1.items()] new_list=sorted(new_list, key= lambda tup: tup[1], reverse= True) for rank in range (len (new_list)) : new_list [rank] = (rank+1,) + new_list [rank] return new_list else : return 'Input must be a nested dictionary.' else : return 'Input must be a nested dictionary.' print (rank_countries (tester))
Output:[(1, 'Algeria', 17), (2, 'Afghanistan', 2), (3, 'Albania', 0)]