十二.作业难点(有IT大牛路过的可以帮我解答我的疑问?万分感谢)--转行的苦逼人
今天开始改变写博客风格,其他不多说.
今天题目如下:
- # 7、写函数,完成以下功能: (8分)
- # 例如有:
- # user_list=[
- # {"name": "alex","hobby":"抽烟"},
- # {"name" :"alex","hobby":"喝酒"},
- # {"name" :"alex","hobby":"烫头"},
- # {"name":"wusir","hobby":"喊麦"},
- # {"name":"wusir","hobby":"街舞"},
- # ]
- # 编写函数处理user_list 并返回如下结果:
- # [{"name":"alex","hobby_list": ["抽烟","喝酒","烫头"]},
- # {"name":"wuhir","hobby_list": ["喊麦","街舞"]},]
我先写自己的写程序的方法,先直接看正确完整的代码直接往下看
一开始看了题目,我发现的规律是"alex"、"name"、"hobby"由多个变成一个
因此我想到了用set集合去重
我是想要把user_list列表的键收集起来变成列表,然后通过set集合去重
但是走到下面代码的时候发现无法再下手写代码,我想知道我这样的思路错在哪里了
- dict={}
- list=[]
- for a in user_list:
- # print(a)
- for k,v in a.items():
- # print(k,v)
- dict.setdefault(k,[]).append(v)
- for b,c in dict.items():
- print(b,c)
- print(dict)
上面的难题卡了我两三个小时,卡在我一直把'name'和'hobby'设置成一个变量,导致感觉变量太多,无法下手(小声逼逼:不知道是不是这个原因)
如果不是我说的原因,我想知道问题出在哪里
所以我想了很久想不出来,然后去百度找,找到下面的代码,但是我也没有看懂
- result = [] # {'name': 'alex', 'hobby_list': ['抽烟']}
- for user in user_list:
- # 1.对空列表进行for循环,判断是否在result里面存在了这个人, 如果存在. 把hobby_list添加一个hobby
- # 2.不存在. 创建一个新字典
- for new_user in result:
- if user['name'] == new_user['name']:
- new_user['hobby_list'].append(user['hobby'])
- break
- else:
- dic = {}
- dic["name"] = user['name']
- dic['hobby_list'] = [user['hobby']]
- result.append(dic)
- print(result)
但我看了好几遍上面的代码和再审题好几遍,我想到一个解决思路
思路如下:
我通过结果发现结果里有列表、字典,还有就是name和hobby相对来说可以是组成一个键值对
名字和爱好可以组成另一个键值对,所以我想到了把名字爱好放到一个字典中,最后来再变成值
具体代码如下:
- def main(user_list):
- #有结果可知,我们需要字典和列表,所以先设dict和list
- dict={}
- list=[]
- for i in user_list:#这里通过for循环先把原列表中的字典提出来
- dict.setdefault(i['name'],[]).append(i['hobby'])#这里通过字典的setdefault的性质来把名字去重
- for k,v in dict.items():#这里通过for循环把上一步字典里的名字和爱好分开变成值
- list.append({'name':k,'hobby_list':v})#这里把名字和爱好变成的键变成字典里'name'和'hobby_list'的值
- return list
- print(main(
- [
- {"name": "alex","hobby":"抽烟"},
- {"name" :"alex","hobby":"喝酒"},
- {"name" :"alex","hobby":"烫头"},
- {"name":"wusir","hobby":"喊麦"},
- {"name":"wusir","hobby":"街舞"},
- ]
- ))
总结:写代码要看清要求是什么,不一定要顺着推,可以逆着推,有结果推出来,这样也或许可以解决问题
十二.作业难点(有IT大牛路过的可以帮我解答我的疑问?万分感谢)--转行的苦逼人的更多相关文章
- 自学Python编程的第十天(希望有IT大牛看见的指点小弟我,万分感谢)---------来自苦逼的转行人
2019-09-20-23:24:15 今天逛论坛.逛知识星球时.逛b站up主时,都说到低学历,非科班的人最好不要去自学Python 他们都说:如果我们学python是为了找工作,最好不要把pytho ...
- 第十二次oo作业
作业十二 规格化设计简介 规格化设计的发展历史 1950年代,第一次分离,主程序与子程序的分离结构是树状模型,子程序可先于主程序编写.通过使用库函数来简化编程,实现最初的代码重用.产生基本的软件开发过 ...
- 第十二周作业_PSP总结报告
回顾1 (1)回想一下你曾经对计算机专业的畅想 当初你是如何做出选择计算机专业的决定的?经过一个学期,你的看法改变了么,为什么? 你认为过去接触到的课程是否符合你对计算机专业的期待,为什么?经过一个学 ...
- 软工 · 第十二次作业 - Beta答辩总结
福大软工 · 第十二次作业 - Beta答辩总结 写第十二次的时候操作失误直接在Beta版本的博客里改了...第七次冲刺的作业链接补在这里 Beta(7/7) 组长本次博客作业链接 项目宣传视频链接 ...
- 201621123005《Java程序设计》第十二次作业
<Java程序设计>第十二次作业 1. 本周学习总结 1.1 以你喜欢的方式(思维导图或其他)归纳总结多流与文件相关内容. 2. 面向系统综合设计-图书馆管理系统或购物车 使用流与文件改造 ...
- 20155213 第十二周课堂作业MySort
20155213 第十二周课堂作业MySort 作业要求 模拟实现Linux下Sort -t : -k 2的功能 参考 Sort的实现 提交码云链接和代码运行截图 初始代码 1 import java ...
- 2017-2018-1 《Linux内核原理与设计》第十二周作业
<linux内核原理与设计>第十二周作业 Sql注入基础原理介绍 分组: 和20179215袁琳完成实验 一.实验说明 SQL注入攻击通过构建特殊的输入作为参数传入Web应用程序,而这 ...
- 实验十二 团队作业8:软件测试与Alpha冲刺
实验十二 团队作业8:软件测试与Alpha冲刺 实验时间 2018-6-13 Deadline: [6.13-6.19]之间任选连续5天的23:00,以团队随笔博文提交时间为准. 评分标准: 按时交 ...
- 实验十二 团队作业8:软件测试与Alpha冲刺 第四天
项目 内容 这个作业属于哪个课程 老师链接 这个作业的要求在哪里 实验十二 团队作业8:软件测试与Alpha冲刺 团队名称 Always Run! 作业学习目标 (1)掌握软件测试基础技术 (2)学习 ...
随机推荐
- 【Beta】Scrum Meeting 9 & 助教参会记录
目录 前言 任务分配 燃尽图 会议照片 签入记录 上周助教交流总结 Q:项目进度如何? Q:有关commit与issue关联的问题? Q:人员变动后分工的变化情况? Q:接下来还有什么新功能? Q:大 ...
- Rose与PowerDesigner:两款UML建模工具的对比
声明 本文转载自:Rose与PowerDesigner:两款UML建模工具的对比 正文 本文和大家重点讨论一下Rose与PowerDesigner:两款UML建模工具的对比,Rose和PowerDes ...
- [oracle/java/sql]用于上十万批量数据插入Oracle表的Java程序
程序下载:https://files.cnblogs.com/files/xiandedanteng/LeftInnerNotExist20191222.rar 原理:Oracle的Insert al ...
- JVM线程状态Running、Sleeping、Wait、Park、Monitor
1,使用JVisualVM时,打开Threads监控,我们可以发现Java的线程状态有以下几种: 2,JVM线程状态: NEW, RUNNABLE, BLOCKED, WAITING, TIMED_W ...
- Ubuntu 安装最新版 (1.12) Golang 并使用 go mod
wget https://dl.google.com/go/go1.12.4.linux-amd64.tar.gz sudo tar -zxvf go1.12.4.linux-amd64.tar.gz ...
- Debian 9安装java与设置环境变量
安装默认JRE / JDK 先更新软件包索引: apt update 检查是否已安装Java: java -version 如果当前未安装Java,您将看到以下输出: Output-bash: jav ...
- url的长度问题
url最长支持多少字符? 在http协议中,其实并没有对url长度作出限制,往往url的最大长度和用户浏览器和Web服务器有关,不一样的浏览器,能接受的最大长度往往是不一样的,当然,不一样的Web服务 ...
- 笔记-JFB:业务流程梳理
ylbtech-笔记-JFB:业务流程梳理 1.家政员找工作-->填写基本信息-->上岗申请--> 1.返回顶部 1. 2. 2. 2.返回顶部 3.返回顶部 4.返回顶部 ...
- mysql时间和本地时间相差13个小时的问题
首先需要查看mysql的当前时区,用time_zone参数 mysql> show variables like '%time_zone%'; +------------------+----- ...
- asp.netcore Log4Net连接kafka的方法
1.NuGet添加2个包: Microsoft.Extensions.Logging.Log4Net.AspNetCore log4net.Kafka.Core 2.Program里修改CreateW ...