Flask接口签名sign原理与实例代码浅析
335
2022-08-25
24Django与文章留言有关的知识点逻辑面试题
python开发岗笔试题:小学春游 - 两组同学,每组1-3人,每组有一个队长;春游期间,由于景点人数较多,秩序混乱,班主任要求在指定地点,按组集合
#源数据s = [{'name':'leader-1','belong_to':None},{'name':'jack','belong_to':'leader-2'},{'name':'lili','belong_to':'leader-1'},{'name':'leader-2','belong_to':None},{'name':'Tom', 'belong_to':'leader-1'}]#目标数据d = [ {'name':'leader-1', 'team':[{'name':'lili'},{'name':'Tom'}]}, {'name':'leader-2', 'team':[{'name':'jack'}]}]请用python代码实现分组:
1先把数组里的字典遍历出来,如果字典里的belong_to存在,就把这个belong_to 的值作为key初始化一个我们需要的字典样式
def find_team(data): leader_lst = [] s_dict = {} for d in data: if d['belong_to']: s_dict.setdefault(d['belong_to'],[]) print(s_dict)find_team(s)运行结果:{'leader-2': [], 'leader-1': []}
2再次分析原始数据:
s = [{'name':'leader-1','belong_to':None},{'name':'jack','belong_to':'leader-2'},{'name':'lili','belong_to':'leader-1'},{'name':'leader-2','belong_to':None},{'name':'Tom', 'belong_to':'leader-1'}]for i in s: print(i)结果:{'name': 'leader-1', 'belong_to': None}{'name': 'jack', 'belong_to': 'leader-2'}{'name': 'lili', 'belong_to': 'leader-1'}{'name': 'leader-2', 'belong_to': None}{'name': 'Tom', 'belong_to': 'leader-1'}
通过遍历,我们获得了一个一个的字典,如果我要把name值从字典你里取出来,应该是这样的:
for d in s: print(d['name'])
3有了上面基础分析后我们就可以组装数据了
已知我们已经通过方法s_dict.setdefault(d['belong_to'],[]),定义出来了我们想要的样式:
s_dict = {'leader-2': [], 'leader-1': []}
那么我要实现 {'leader-2': ['name':'lily'], 'leader-1': ['Tom']}这样的效果,只需要:
s_dict['d['belong_to']'].append({'name':d['name']})
def find_team(data): leader_lst = [] s_dict = {} for d in data: if d['belong_to']: s_dict.setdefault(d['belong_to'],[]) s_dict['d['belong_to']'].append({'name':d['name']}) print(s_dict)find_team(s)运行结果:{'leader-2': [{'name': 'jack'}], 'leader-1': [{'name': 'lili'}, {'name': 'Tom'}]}
通过以上3步我们就把同学分组成功啦,如果字典里的belong_to不存在,那么这个人肯定就是队长啦,那么我们就组装我们需要的数据格式:leader_lst = [{'name':'leader-1', 'team':[]},{'name':'leader-2', 'team':[]}]
def find_team(data): leader_lst = [] s_dict = {} for d in data: if d['belong_to']: s_dict.setdefault(d['belong_to'],[]) s_dict[d['belong_to']].append({'name':d['name']}) else: leader_lst.append({'name':d['name'],'team':[]}) print(s_dict) print(leader_lst)find_team(s)结果:#s_dict{'leader-2': [{'name': 'jack'}], 'leader-1': [{'name': 'lili'}, {'name': 'Tom'}]}#leader_lst[{'name': 'leader-1', 'team': []}, {'name': 'leader-2', 'team': []}]
4拼装数据完成最终想要的效果:
#目标数据d = [ {'name':'leader-1', 'team':[{'name':'lili'},{'name':'Tom'}]}, {'name':'leader-2', 'team':[{'name':'jack'}]}]
先循leader_lst,如果leader_lst里的['name']值在字典s_dict里,那么就就把s_dict里的name值取出来放到leader_lst里,即:
for l in leader_lst: if l['name'] in s_dict: l['team'] = s_dict[l['name']]
解释:
因为我们事先定义了s_dict = { },所以
s_dict[l['name']] == {‘name’:l['name']] }
最终程序代码:
def find_team(data): leader_lst = [] s_dict = {} for d in data: if d['belong_to']: s_dict.setdefault(d['belong_to'],[]) s_dict[d['belong_to']].append({'name':d['name']}) else: leader_lst.append({'name':d['name'],'team':[]}) for l in leader_lst: if l['name'] in s_dict: l['team'] = s_dict[l['name']] return leader_lstprint(find_team(s))结果:[{'name': 'leader-1', 'team': [{'name': 'lili'}, {'name': 'Tom'}]}, {'name': 'leader-2', 'team': [{'name': 'jack'}]}]
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。
发表评论
暂时没有评论,来抢沙发吧~