按两个键值排序

时间:2015-04-25 08:44:47

标签: python sorting

我正在尝试转换代码,我遇到了这一行,我不确定它是做什么的。我知道我可以使用a:a*a之类的键进行排序,但它如何处理两个键?

这是我想要转换的行(对C#,如果重要的话):

 arr.sort(lambda a,b:a-b)

2 个答案:

答案 0 :(得分:1)

https://docs.python.org/2/tutorial/datastructures.html

  

list.sort(cmp = None,key = None,reverse = False)

     

对列表中的项目进行排序(参数可用于排序自定义,请参阅sorted()以获取解释)。

https://docs.python.org/2/library/functions.html#sorted

  

cmp指定两个参数的自定义比较函数(iterable   元素)应返回负数,零或正数   取决于第一个参数是否被认为小于,   等于或大于第二个参数:cmp = lambda x,y:   cmp(x.lower(),y.lower())。默认值为None。

lambda a,b用于在Python中定义匿名函数。

所以这与

相同
def f(a,b):
    return a-b

arr.sort(f)

如果> 0自然会返回a > b0会自然返回a==b

正如@MartijnPieters指出的那样,这应该是简单的“自然”排序,如果我们没有运算符重载(例如普通整数),它将与没有参数的sort()相同。

答案 1 :(得分:0)

您通过将排序比较函数作为lambda传递来对数组 arr 进行排序。

Lambda是本地定义的小函数,也可以在C#中使用。

最后,调用根据变量的差异对数组进行排序。