Iterate through a dictionary on a nested dictionary

I have a nested dictionary as follows:

student_loan_portfolio = { 'loan1': {'rate': .078, 'balance': 1000, 'payment': 100, 'prepayment': 0}, 'loan2': {'rate': .0645, 'balance': 10, 'payment': 5, 'prepayment': 0}, 'loan3': {'rate': .0871, 'balance': 250, 'payment': 60, 'prepayment': 0}, 'loan4': {'rate': .0842, 'balance': 200, 'payment': 37, 'prepayment': 0}, 'loan5': {'rate': .054, 'balance': 409, 'payment': 49, 'prepayment': 0}, 'loan6': {'rate': .055, 'balance': 350, 'payment': 50, 'prepayment': 0} } 

I would like to iterate through the containing dictionary (with keys loan1 through loan6 ) in order of the key containing the dictionary with the highest value "rate" in the corresponding nested dictionary. That is, I would like to iterate in the order loan3 , loan4 , loan1 , loan2 , loan6 , loan5

What is the easiest way to do this?

thanks

+4
source share
2 answers

I believe you want:

 sorted(student_loan_portfolio.items(), key=lambda (k,v): v['rate'], reverse=True) 

(Thanks @MarkReed, you're right. To sort in descending order, we need to either -v['rate'] , or, as shown above, pass reverse=True to sorted .)

+3
source

You can sort the values ​​as follows:

sorted(student_loan_portfolio.items(), key=lambda (name,portfolio): portfolio['rate'], reverse=True) [('loan3', {'rate': 0.0871, 'balance': 250, 'payment': 60, 'prepayment': 0}), ('loan4', {'rate': 0.0842, 'balance': 200, 'payment': 37, 'prepayment': 0}), ('loan1', {'rate': 0.078, 'balance': 1000, 'payment': 100, 'prepayment': 0}), ('loan2', {'rate': 0.0645, 'balance': 10, 'payment': 5, 'prepayment': 0}), ('loan6', {'rate': 0.055, 'balance': 350, 'payment': 50, 'prepayment': 0}), ('loan5', {'rate': 0.054, 'balance': 409, 'payment': 49, 'prepayment': 0})]

See this page for more details on how complex sorting in python works: http://wiki.python.org/moin/HowTo/Sorting/

0
source

Source: https://habr.com/ru/post/1445404/


All Articles