sorted 传参数问题

来源:2-3 如何统计序列中元素的出现频度

小龙骑士

2017-06-01

我用的版本是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回答

程序员硕

2017-06-03

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

0
1
小龙骑士
非常感谢!
2017-06-03
共1条回复

Python高效编程技巧实战

精选50个Python案例,源自实战,全面提升Python编程能力

2582 学习 · 360 问题

查看课程