4

我有一个嵌套字典如下:

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}
}

我想按包含在其各自嵌套字典中具有最高“速率”值的字典的键的顺序遍历包含字典(通过键)loan1loan6也就是说,我想按 loan3, loan4, loan1, loan2, loan6,的顺序进行迭代loan5

最简单的方法是什么?

谢谢

4

2 回答 2

3

我相信你想要:

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

(感谢@MarkReed,你是对的。要按降序排序,我们需要-v['rate']或者,如上所示,传递reverse=Truesorted.)

于 2012-11-11T23:41:31.587 回答
0

您可以像这样对值进行排序:

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})]

有关如何在 python 中进行复杂排序的更多详细信息,请参阅此页面: http ://wiki.python.org/moin/HowTo/Sorting/

于 2012-11-11T23:44:06.180 回答