请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

sorted 传参数问题

我用的版本是python3
d = {'1': 84, '2': 87, '3': 97, '4': 73, '5': 75, '6': 71, '7': 67, '8': 67, '9': 66, '10': 80, '11': 66, '12': 94, '13': 74, '14': 89, '15': 89, '16': 87, '17': 71, '18': 83, '19': 76, '20': 88}
统计value大于70的表达式为:{key:value for key,value in d.items() if value > 70},此时d.items()可以正常将key和value传递给for循环中的key和value,
但是假如我要对d按value大小进行排序,我的表达式是这样写的;
sorted(d.items(), key = lambda key,value:value, reverse = True)它会报错,提示我少传递了一个位置参数value,
但是修改 sorted(d.items(), key = lambda x:x[1], reverse = True)就可以正常排序。
所以请问老师,为什么同样迭代d.items(),在for循环里可以将元组的值赋给key和value,而在sorted里的lambda里却只能将元组
作为一个整体传递给参数,而不能分别传递给key和value呢?


正在回答

1回答

在for循环里, 元组拆包. sorted的lambda里没有拆包.

0 回复 有任何疑惑可以回复我~
  • 提问者 小龙骑士 #1
    非常感谢!
    回复 有任何疑惑可以回复我~ 2017-06-03 15:23:54
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信