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

それぞれのネストされた辞書で最高の「レート」値を持つ辞書を含むキーの順序で、含まれている辞書を (キーloan1を介して)反復処理したいと思います。つまり、、、 、 、のloan6順に繰り返したいと思います 。loan3loan4loan1loan2loan6loan5

これを行う最も簡単な方法は何ですか?

ありがとう

4

2 に答える 2

3

私はあなたが望むと信じています:

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

(@MarkReedに感謝します。その通りです。降順でソートするには、-v['rate']または、上で示したようにに渡す必要reverse=Trueがありますsorted。)

于 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 に答える