python3 lambda函数字典排序_排序字典表理解中的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 Sharp,我知道最简单的方法是: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 "", line 1, in

f(1,2,3)

TypeError: () takes exactly 1 argument (3 given)

谢谢你的澄清。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值