一行代码的高阶函数
作者:互联网
'''
给定一数组a=[{"id": 1, "status": 2}, {"id": 2, "status": 1}, {"id": 3, "status": 1}],
请将数组a转换为以status为key,
status对应的对象组合在一起做为value的字典b,
即b={1: [{"id": 2, "status": 1}, {"id": 3, "status": 1}], 2: [{"id": 1, "status": 2}]}
'''
a=[{"id": 1, "status": 2}, {"id": 2, "status": 1}, {"id": 3, "status": 1}]
## 先获取相同的status字段的字典
def func(x1):
a = []
b = {}
for x in x1:
a.append(x['status'])
if x['status'] in a:
b[x['status']] = x
return b
def func1(x):
a = []
b = {}
a.append(x['status'])
a.sort()
print(a)
if x['status'] in a:
b[x['status']] = [x]
b = sorted(b) # 字典的话默认按照键来
print(b)
return b
print(func(a))
print(list(map(func1,a)))
b = []
c= {}
# for dist_a in a:
# b.append(dist_a.get('status'))
# for i in b:
# if i == dist_a.get('status'):
'''
请使用列表推倒式将列表a=[30, 12, 66, 19, 39, 43, 36, 57, 121]
中的数能整除列表b=[3, 5, 1]中的数组合在一起配对,
即30可以整出3,所以30和3为一对。即最终结果为[(30,3), (30, 5)....,(121, 1)]
'''
# a=[30, 12, 66, 19, 39, 43, 36, 57, 121]
# b=[3, 5, 1]
# c = [(i,j)for i in a for j in b if i % j==0]
# print(c)
'''
给定数组
a=[{"id": 2, "name": "test"}, {"id": 5, "name": "mm"}, {"id": 3, "name": "tt"}],
请将数组a的id按照指定数组b=[3, 2, 5]的顺序重新排序。
'''
## 字典排序
# b = {{"id": 2, "name": "test"}, {"id": 5, "name": "mm"}, {"id": 3, "name": "tt"}}
# print(sorted(b.items(), key=lambda x: x[1]))
# 这样多个字典赋值给一个对象就变成了元组
# a={"id": 2, "name": "test"}, {"id": 5, "name": "mm"}, {"id": 3, "name": "tt"}
a=[{"id": 2, "name": "test"}, {"id": 5, "name": "mm"}, {"id": 3, "name": "tt"}]
b=[3, 2, 5] # 列表迭代返回元素
# def demo(b):
# for i in b:
# return i # 这样只能使用一次
# return b.iter()
## 迭代器使用场景
### 对于sorted对迭代的元素本身就会提取,然后按照顺序迭代每个元素,这时候排序可以按照指定元素的键或者值
list_a = sorted(a,key=lambda b: b ) # sorted是如何返回值呢
print(list_a)
### 根据指定的值排序;从列表中获取值指定,指定的值对对字典的id来卸货
## 真实场景,真实需求,风险点
# lambda默认直接返回函数
# list_a = sorted(a,lambda x: a[x].get('id') )
标签:status,函数,代码,30,print,sorted,高阶,id,name 来源: https://www.cnblogs.com/wkhzwmr/p/16308655.html