2012-11-11 134 views
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

什麼是最簡單的方法是什麼?

感謝

回答

3

我相信你想:

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

(感謝@MarkReed,你是對的排序降序排列,我們需要或者-v['rate']或者,正如我上面顯示,合格。 reverse=Truesorted

+0

除了OP希望它周圍的其他方法,最高優先。所以關鍵應該是'-v ['rate']'。 (或'reverse = True',這是我忘記的一個選項,因爲我只是一個不經常使用的Python程序員,感謝提醒!) –

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/

+0

謝謝大家。 – cdelsola