【发布时间】:2017-03-10 23:45:40
【问题描述】:
我试图了解 lambda 在 groupby 或 sort 函数中的工作原理,例如,我有一个对象列表,每个对象都有两个属性:姓名和姓氏 我想按姓名和姓氏分组,我尝试了两次:
list.sort(key=lambda x: x.name and x.surname)
list.sort(key=lambda x: (x.name, x.surname))
然后分组
groupby(list, lambda x: x.name and x.surname)
groupby(list, lambda x: (x.name,x.surname))
我注意到排序和分组的第一个例子不能很好地工作,在这种情况下 lambda 是如何工作的?有没有什么好的方法来测试 lambda 函数在做什么?
谢谢!
【问题讨论】:
-
x.name and x.surname是一个布尔表达式,您希望它如何反映排序的偏序? -
因为
x and y不与(x, y)相同,而是x if not x else y。 -
@MichaelFoukarakis 是的,这似乎很明显。我仍然不明白为什么当 lambda 是一个元组时它会起作用,我想我会更多地搜索 groupby 和 sort 如何处理参数。谢谢!
-
返回元组时它似乎起作用的原因是元组按从左到右的顺序对其元素进行排序。
标签: python python-2.7 lambda