Tôi có từ điển sau:chức năng lambda trong từ điển được sắp xếp danh sách hiểu
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}
}
Tôi muốn lặp qua các từ điển chứa (với các phím loan1 qua loan6) theo thứ tự phím có chứa các từ điển với mức cao nhất giá trị 'tỷ lệ' trong từ điển lồng nhau tương ứng. Đó là, tôi muốn lặp theo thứ tự loan3, loan4, loan1, loan2, loan6, loan5
Nhờ @Jame Sharp cách dễ nhất để làm điều này mà tôi biết là:
for k,v in sorted(student_loan_portfolio.items(), key=lambda (k,v): v['rate'], reverse=True):
tôi bây giờ đọc về lambda và không thể thực sự hiểu chính xác cách thức và lý do tại sao nó hoạt động. Đầu tiên, v ['rate'] Tôi tin là trả lại giá trị của các khóa từ điển đó. Nhưng nó có vẻ như nó phải là một loại lỗi cú pháp. Tham chiếu v ['rate'] là gì và logic đằng sau cú pháp là gì?
Trên ghi chú có liên quan, tại sao, chúng ta phải chỉ định đầu vào cho hàm lambda như một bộ tuple?
Và các trường hợp sau đây khác nhau như thế nào?
#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)
Cảm ơn bạn đã làm rõ.
tùy chọn thứ hai mong đợi đầu vào được đóng gói có 3 giá trị? 'f ((1,2,3))' –