一、lambda
- lambda的一些说明-->传送门
二、方法的关键字参数
- 在Python中函数(function)是可以被当做参数传递的
- 很多内置的方法都用
key
作为这个关键词参数的键
示例
list1 = [1, -32, 43, -3, 2, -3]
print(sorted(list1, key=lambda x: abs(x)))
# [1, 2, -3, -3, -32, 43]
- 还有很多内置参数都可以使用key来接是一个函数参数:map、max、min······
三、注意事项
- 在比较、排序的方法中,key配合lambda使用的时候,他的参数是可迭代对象的元素
a = {1: {'n1': 22}, 23: {'n2': 4}, 32: {"n3": 93}, 43: {'n4': 54}}
def s(x):
print(x)
return list(a[x].values())[0]
print(min(a, key=s))
# --------------
1
23
32
43
23
可以看出来,min给的参数是他遍历的结果,如果是多层嵌套结构,要对里面的元素进行排序,可以逐层取出
lambda写法
dict_a = {1: {'n1': 22}, 23: {'n2': 4}, 32: {"n3": 93}, 43: {'n4': 54}}
print(min(a, key=lambda x: list(a[x].values())[0]))
print(sorted(a, key=lambda x: list(a[x].values())[0]))
# ----------------
23
[23, 1, 43, 32]
*这里的列表是dict_a键,根据他第二层的value来排序的
如果要显示整个字典,使用列表推导式完成:
print([{i: a[i]} for i in sort_a])
# -------
[{23: {'n2': 4}}, {1: {'n1': 22}}, {43: {'n4': 54}}, {32: {'n3': 93}}]
网友评论