使用Lambda函数进行排序

时间:2018-08-26 17:08:43

标签: python

常规未排序字典

>>> d = {'banana': 3, 'apple': 4, 'pear': 1, 'orange': 2}

字典按键排序

>>> OrderedDict(sorted(d.items(), key=lambda t: t[0]))

字典按值排序

>>> OrderedDict(sorted(d.items(), key=lambda t: t[1]))

上述行中lambda函数的工作方式。什么是t [0],t [1]?

3 个答案:

答案 0 :(得分:0)

这里的lambda函数的工作就像,用第二项对元组列表进行排序。     sorted(d.items(),key = lambda t:t [1])

d.items()会是这样。

[('orange', 2), ('pear', 1), ('banana', 3), ('apple', 4)]

因此lambda t:t[1]会在给定的迭代器中返回第二个元素。因此,它将基于第二个元素进行排序。与lambda t:t[0]相同,只排序第一个元素。

了解lambda函数的示例。

In [39]: func = lambda t:t[1]

In [40]: [func(i) for i in d.items()]
Out[40]: [2, 1, 3, 4]

答案 1 :(得分:0)

errno是匿名函数。指定排序顺序时使用起来很方便,但是lambda并没有什么神奇之处,如果您也愿意,可以显式定义函数:

lambda

def sorter(x): return x[1] print sorted(d.items(), key=sorter) t中的一个元素,因此,选择d.items()时将按第一个元素排序,选择t[0]时将按第二个元素排序。如果您选择t[1],则会得到t[2]

答案 2 :(得分:0)

首先了解一些背景信息:item()函数返回字典中的元组列表。

此行:

>>> OrderedDict(sorted(d.items(), key=lambda t: t[0]))

在此行中,已排序的函数遍历每个项目(一个元组),并且根据传递的lambda,使用该元组的第一个元素(键)进行排序(t[0])。第二个示例遵循相同的想法,除了元组的第二个元素(值)。这样,每一行分别导致按键和值进行排序。