常规未排序字典
>>> 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]?
答案 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]
)。第二个示例遵循相同的想法,除了元组的第二个元素(值)。这样,每一行分别导致按键和值进行排序。