我有以下的解釋:lambda函數
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)迭代中含有最高的字典中鍵的順序'rate'值在其各自的嵌套字典中。也就是說,我想在loan3,loan4,loan1,loan2,loan6的順序進行迭代,loan5
由於@Jame夏普要做到這一點,我知道最簡單的方法是:
for k,v in sorted(student_loan_portfolio.items(), key=lambda (k,v): v['rate'], reverse=True):
我我現在正在閱讀關於lambda的內容,並且無法真正理解這個工作原理的方式和原因。 首先,v ['rate']我相信會返回這些字典鍵的值。但它似乎應該是某種語法錯誤。什麼是v ['rate']引用以及語法背後的邏輯是什麼?
在相關說明中,爲什麼我們必須將lambda函數的輸入指定爲元組?
以下情況如何不同?
#1
>>>f = lambda x,y,z:x + y + z
>>>f(1,2,3)
#6
>>>f = lambda (x,y,z): x + y + z
>>>f(1,2,3)
Traceback (most recent call last):
File "<pyshell#48>", line 1, in <module>
f(1,2,3)
TypeError: <lambda>() takes exactly 1 argument (3 given)
謝謝您的澄清。
第二個預計3值的打包輸入? 'f((1,2,3))' –