Lambda与函数定义的差异解析及字典按值排序的函数实现
字典按值排序:lambda与自定义函数的差异及正确写法
错误原因
你用自定义函数时报错“x未定义”,是因为给sorted的key参数传了func(x)——这是直接调用函数并传入未定义的变量x,而不是传递函数本身。
而lambda表达式lambda x: x[1]本质是一个匿名函数对象,你直接把这个函数对象传给了key,sorted会自动遍历a.items()中的每个元素,把元素作为参数传给这个lambda函数处理,所以不会报错。
正确的自定义函数实现
只需要把函数名传给key即可,不需要加括号和参数,sorted内部会自动把每个元素传给函数:
def func(item): return item[1] sorted_dict = sorted(a.items(), key=func)
这样写法和lambda版本的逻辑完全一致,都能实现按字典值排序。
内容的提问来源于stack exchange,提问作者Ram Kumar
相关产品推荐
相关产品推荐

