遍历嵌套字典中的字典

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)迭代,以包含具有其各自嵌套字典中最高 'rate' 值的键值的字典顺序排序。也就是说,我想按顺序迭代 loan3loan4loan1loan2loan6loan5

请问如何实现这个最简单的方法?

谢谢

2个回答

3

我相信您想要:

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

感谢 @MarkReed,您是正确的。要按降序排序,我们需要使用 -v['rate'] 或者像我上面展示的一样,将 reverse=True 传递给 sorted 函数。


除非 OP 希望相反,即最高的排在前面。因此键应为 -v['rate']。(或 reverse=True,这是我忘记的选项,因为我只是一个偶尔使用 Python 的程序员。感谢提醒!) - Mark Reed

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/


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接