首页 文章 精选 留言 我的

精选列表

搜索[快速],共10000篇文章
优秀的个人博客,低调大师

每日一博 | 一道快速考察 Python 基础的面试题

这是前一阵子群友发在群里的一道面试题,利用 Python 字典的特性,可以巧妙地使用精简代码达成完美解。 题目 将 data 转换成 new_data 这种形式,写出转换过程。 data = { 'a_b_h':1, 'a_b_i':2, 'a_c_j':3, 'a_d':4, 'a_c_k':5, 'a_e':6 } new_data = { 'a':{ 'b':{ 'h':1, 'i':2 }, 'c':{ 'j':3, 'k':5 }, 'd':4, 'e':6 } } 可以看出,转换的过程是将 key 的下划线进行拆分,然后下划线后边的字符嵌套在前面字符的值中。 感兴趣就打开 IDE,自己先试着解一下。 解题思路 你应该很快想到,主要思路是将下划线 split 后,然后依次使用字符生成内层字典,当达到最后一个字符时将数字作为值。 那么关键点在于,如何不断地获得内层字典去修改呢?实际本题就是考察你是否理解 Python 字典是引用传递这个特性。 什么是引用传递?我们知道 Python 中字典和列表对象都是可变对象,它们的变量传递给另一个变量后,改变对象元素会使得两个变量都会同时改变,比如: new_data = {} tmp = {} new_data['a'] = tmp print(new_data) # {'a': {}} tmp['b'] = 1 print(new_data) # {'a': {'b': 1}} 如上,利用这个特性,将内层字典赋值给一个中间变量,然后改变这个中间变量,即可同步修改最终的 new_data 变量。 根据这个思路,初步代码如下: data = { 'a_b_h':1, 'a_b_i':2, 'a_c_j':3, 'a_d':4, 'a_c_k':5, 'a_e':6 } new_data = {} for key, value in data.items(): keys = key.split('_') tmp = new_data last = len(keys) - 1 # 最后一个 key 的索引值 for i, k in enumerate(keys): if i == last: tmp[k] = value continue if k not in tmp: sub_tmp = {} tmp[k] = sub_tmp tmp = sub_tmp else: tmp = tmp[k] 这也是群友给出的第一版答案,这样写并没有多大问题,但是代码比较繁琐,肯定还有优化空间。 我们可以只使用一个中间变量即可,进一步优化: for field, value in data.items(): keys = field.split('_') tmp = new_data last = len(keys) - 1 for i, k in enumerate(keys): if k not in tmp: tmp[k] = {} if i < last else value tmp = tmp[k] # 将内层 dict 传给 tmp 上面这个代码看似很简洁了,但是仍然还有两个 if 判断,如果不是使用了三元表达式的话,还会更多行。 所以可以进一步优化: for field, value in data.items(): keys = field.split('_') tmp = new_data for k in keys[:-1]: tmp = tmp.setdefault(k, {}) tmp[keys[-1]] = value 我们省略掉了 last 来判断最后一个字符的索引,直接通过 keys[:-1] 避开最后一个字符,末尾再单独生成数字键值对。 这里还使用字典的一个内置方法 —— setdefault。 dict.setdefault(key, default=None) 方法和 get 方法类似,只是如果键不存在于字典中,不仅会返回 default 参数的值,还同时会用该值自动生成一个键值对。 if k not in tmp: tmp[k] = {} v = tmp[k] # 等价于 v = tmp.setdefault(k, {}) 最终我们使用了 6 行代码就解出该题,这也是接近最简代码。 如果使用字典引用的特性是合格的话,那么当你用出 setdefault 这个方法后,面试官已经给你打了优秀,所以一定要熟悉这些数据对象的所有内置方法。 本文属于原创,首发于微信公众号「面向人生编程」,如需转载请后台留言。

优秀的个人博客,低调大师

DataWorks数据分析模块全新发布,快速的数据智能洞察平台

DataWorks数据分析概述 数据分析主要提供表格模式的MaxCompute表操作、电子表格协同编辑和统计分析、可视化报表搭建和分享等核心功能。凭借简单易用的操作界面,使数据变化所见即所得,可视化完成数据的修改和分析、报表的搭建和分享,支持电子表格、可视化报表、维表三种分析形式。 DataWorks数据分析产品入口 通过DataWork功能入口-全部产品-数据分析即可进入数据分析模块首页 DataWorks数据分析核心功能 1. 电子表格编辑明细数据,支持加减乘除基础运算、函数套用、分类汇总等多类型数据加工方式。 在线协同编辑可邀请小伙伴们共同完成表格内容的编辑 透视分析可选择不同的列进行分类汇总;可按条件展示不同格式 2.可视化报表自助完成可视化探索和报表制作,无需写SQL代码,所有过程均可通过鼠标拖拽、点选完成。 18+种控件丰富的控件选择,可以满足多种分析场景 按权限分享分析结果可进行权限设置,分享给特定的人 3.维表表格式建MaxCompute表、编辑数据,无需SQL即可一键生成、多人协作修改,为您的数据工作添砖加瓦 表格式建表无需编写 DDL/Insert 语句,MaxCompute表行列数据所见即所得 转存表电子表格的编辑数据可一键转存为MaxCompute表 DataWorks数据分析功能示例 1. DataStudio搜索结果直接透视在DataStudio/数据分析工作台等DataWorks的研发模块执行select语句获取一个或多个表的查询结果,直接对结果数据开始透视分析。 2. 数据源透视直接选择MaxCompute表或已有的MySQL数据源中的表,然后开始透视分析 3. 本地Excel文件导入透视支持将本地Excel文件上传后,编辑修改、分享给其他人协同编辑或透视分析数据分布等。 更多功能介绍请查看DataWorks数据分析帮助文档:https://help.aliyun.com/document_detail/119756.html如果您有任何使用问题,欢迎您加入DataWorks数据分析用户钉钉群:23341214

优秀的个人博客,低调大师

Dapps 1.1.0 发布,增加开发者模式,快速创建自己的应用

前言:开发者模式可以让用户创建自己的应用程序,并通过dapps面板方便的进行管理。如果应用质量较好,可联系作者,发布到商店中 # 注:每周会上架1~2款新应用,持续更新 介绍 dapps是一个应用程序商店,包含丰富的软件,一键安装程序;多版本共存。 官网文档:dapps应用商店 新增内容: 开发者模式:用户创建自己的应用程序,并通过dapps面板方便的进行管理。 目前包含的32软件 NextCloud云盘:将电脑(或服务器)变为网盘 ------查看效果 百度网盘web版:下载速度比官方快很多 ------查看效果 AriaNg高速下载器:2倍迅雷速度,迅雷无法下载的资源,也能下载 ------查看效果 人人影视:美剧爱好者的第一选择 ------查看效果 kodexplorer可道云:像Windows操作一样的企业网盘 ------查看效果 auxpi免费图床:集合多家 API 的新一代图床 ------查看效果 百度网盘下载器(命令行) ------查看效果 wordpress ------查看效果 zblog个人博客:小巧而强大的PHP博客程序与建站系统 ------查看效果 py12306抢票 ------查看效果 magnetw: 种子搜索神器 ------查看效果 PhpMyAdmin:mysql管理工具 ------查看效果 adminmongo: mongo管理工具 ------查看效果 PHP: 世界上最好的语言(版本:5.6,7.1,7.2,7.3)------查看效果 Mysql:数据库(版本:5.6,5.7,,8.0)------查看效果 Nginx:服务器(版本:1.16)------查看效果 redis:nosql数据库(版本:5.0)------查看效果 mongo:是一个基于分布式文件存储的数据库(版本:3.4,4.0)------查看效果 gogs版本控制 ------查看效果 rabbitmq3.7队列服务 ------查看效果 2048游戏 ------查看效果 cxk打篮球:一款休闲游戏 ------查看效果 等...... 效果:

优秀的个人博客,低调大师

汇报时,如何让老板快速抓住重点? | 黄金三步法

阿里妹导读:对事物的归类分组是我们人类的天性,我们的大脑会自动将发现的所有事物以某种持续组织起来。但如何组织才能帮助我们解决工作和生活中出现的各种复杂问题?今天,我们请阿里高级技术专家张建飞分享他的黄金三步法。 我们经常说软件开发中,没有银弹。的确,单看软件领域,很少有什么方法论是普适的。然而再拔高一些,跳出软件的范畴,有一些东西是普适的。 最近,我有一个新发现:我发现“归类分组”在我们解决问题中起着巨大的作用。而这里的“问题”不仅仅限于软件设计,从日常生活、产品设计到公司战略、生物分类。都有它的身影。 这是为什么呢?究其原因可能有两个: 1.归类分组是抽象的重要方法,解决复杂问题我们离不开抽象。2.归类分组是结构化的重要步骤,结构化的表达离不开归类分组。 当然,归类分组要先有素材可以“归类”才行。因此,完整的方法论是这样的,我给他起了一个

优秀的个人博客,低调大师

使用jenkins的jacoco插件快速实现统计单元测试覆盖率

安装jenkins wget http://mirrors.jenkins.io/war-stable/2.176.4/jenkins.war java -jar jenkins.war 参考 通过java方式安装jenkins jenkins可选插件为空的解决方式或jenkins不能联网 安装git、maven、jacoco等插件 需要安装Git plugin和JaCoCo plugin 配置maven 配置单元测试任务 spring-petclinic是一个经典的spring boot项目,这里我们也选择该项目来做单元测试并统计测试覆盖率。项目地址如下:https://github.com/spring-projects/spring-petclinic。 在jenkins里选择New Item链接 进入新建任务页面如下 输入spring-petclinic-uttest,选择“构建一个maven项目”,点“OK”按钮 General选项卡 保留默认值 Source Code Management选项卡 Repository URL输入https://github.com/spring-projects/spring-petclinic.git Build Triggers选项卡 保留默认值 Pre Steps选项卡 Goals and options 文本框输入 “clean verify”。 Post-build Actions 选项卡 点击 Add post-build-Actions下拉选择框,选择“Record JaCoCo coverage report”条目 保持默认选项,最后点保存按钮即可 执行单元测试任务,查看单元测试覆盖率 根据网络情况和本任务是否首次执行,该任务可能执行时间比较长,且容易中断报错,我这次是在阿里云主机上新搭的jenkins,一共执行了4次,才成功如下图 点Coverage Trend 链接,右下方显示 JaCoCo Coverage Trend 如下图 继续点击 JaCoCo Coverage Trend 区域任意位置,显示单元测试覆盖率报告如下图 总结 本文通过具体一个实例讲解了如何利用jenkins触发单元测试执行,并使用jacoco插件来统计单元测试用例覆盖率。

优秀的个人博客,低调大师

大数据开发学习路线,如何快速成为大数据工程师?

其实大数据并没有我们想象中的那么高冷。只要方法得当,学习全面系统,零基础也可以高效胜任大数据开发的工作 大数据开发,是一个刚刚开始发展的行业,而且技术经常更新,所以大数据的发展会长期发展,但要求程序员要跟着行业发展不断学习进步。一个新技术的出现就意味着要学习研究。 2.都知道大数据开发薪资很高,高的原因是什么,是因为技术门槛高难学,还是仅仅是因为目前会的人少,所以导致虚高 大数据开发学习可以按照以下内容进行学习: 第一阶段:JavaSE+MySql+Linux 学习内容:Java 语言入门 → OOP 编程 → Java 常用Api、集合 → IO/NIO → Java 实用技术 → Mysql 数据库 → 阶段项目实战 → Linux 基础 → shell 编程 学习目标:学习java语言,掌握java程序编写、面向对象程序开发,掌握MySql体系结构及核心编程技术,打好 Linux 基础,为后续学习提供良好的语言基础。 第二阶段:Hadoop 与生态系统 学习内容:Hadoop → MapReduce → Avro → Hive → HBase → Zookeeper →Flume → Kafka → Sqoop → Pig 学习目标:掌握大数据学习基石Hadoop、数据串行化系统与技术、数据的统计分析、分布式集群、流行的队列、数据迁移、大数据平台分析等 第三阶段:Storm 与Spark 及其生态圈 学习内容:Storm → Scala → Spark → Spark SQL → Spark Streaming →Spark 机器学习 学习目标:让大家拥有完整项目开发思路和架构设计,掌握从数据采集到实时计算到数据存储再到前台展示,所有工作一个人搞定!并可以从架构的层次站在架构师的角度去完成一个项目。 第四阶段:其他 学习内容:Mahout 机器学习→ R 语言→Python 学习目标:机器学习领域经典算法的实现,熟练使用 R语法和统计思维,可以基于具体问题建立数学模型,掌握python技术与数据分析,将数据结果以可视化的直观方式展示给目标用户。 第五阶段:项目实战、技术综合运用 学习内容:某手机公司bug 系统 → 传统广告怎么用大数据 → 类互联网电商网站 → 网站日志收集清洗系统 → 网站流量统计分析系统 学习目标:具备企业级大型完整项目开发能力,综合运用大数据分析知识,完成数据分析、收集、展示的完整流程。

优秀的个人博客,低调大师

[python作业AI毕业设计博客]selenium工具python快速入门1简介

概述 Selenium是一个开源自动化测试套件,适用于跨浏览器和平台的Web应用程序。 它是一组软件工具,每种工具都有不同的方法来支持测试自动化。 Selenium3.*的组件如下: Selenium IDE(集成开发环境 Integrated Development Environment) Selenium WebDriver Selenium Grid Selenium3.停止直接使用Selenium RC。 Selenium Core已从最新版本的Selenium 3.中完全删除。 官网:http://www.seleniumhq.org/ Selenium开源,基于Apache 2.0 License。github: https://github.com/SeleniumHQ/selenium Selenium IDE Se

优秀的个人博客,低调大师

克拉克拉(KilaKila):借力阿里云快速构建短视频推荐系统

作者:阿里云MVP田亮 一、产品背景克拉克拉(KilaKila)是国内专注二次元、主打年轻用户的娱乐互动内容社区软件。KilaKila 推出互动语音直播、短视频、对话小说等功能,满足当下年轻用户个性化、碎片化的文娱需求。其中短视频每天都有海量的视频素材产生,这对用户造成了严重的信息过载,难以从中自主挑选感兴趣的内容。每一位视频内容的消费者同时也是生产者,期望自己的作品能够被更多的志同道合者所看到,获得最大的曝光度。为解决以上矛盾,考虑构建个性化推荐系统,在不需要用户明确说明更多信息的情况下仅仅依靠分析用户的历史行为数据,为用户推荐他可能感兴趣的内容。同时,推荐系统能够有效挖掘长尾内容,使一些小众的主题作品能够获得尽可能多的展示机会。面对以上业务诉求,经技术调研后决定使用阿里云PAI平台搭建基于KilaKila二次元UGC的个性化智能

优秀的个人博客,低调大师

阿里云Redis助力新东方乐词业务快速稳定发展

背景介绍 乐词是新东方倾情打造权威英语单词背记APP,业务涵盖初中、高中、新概念、英语四六级、考研、雅思、托福、GRE、SAT、ACT 、GMAT、托业、商务英语等英语单词库,科学规划词根背记,离线背单词随时学,权威详尽单词解析,全新考试干货课程,群组背记英语单词,完整的视频教学体系为用户提供全方位的单词学习体验。乐词系统涵盖词书、背词、查词、视频课程、活动、用户、在线支付等10多个核心业务模块,用户使用日活10w+,为了给用户提供稳定可靠的服务,对我们系统的可用性提出了更高的要求。Redis作为业界目前流行的Key-Value型NoSQL存储组件,可以帮我们解决面临的技术挑战。因我们属于创业型项目,自建系统以及自行运维意味着前期较大的投入以及过高的运维成本,随着业务规模的扩张,资源水平扩展以及垂直扩展也是未来无法避免的痛点,所以我

资源下载

更多资源
Mario

Mario

马里奥是站在游戏界顶峰的超人气多面角色。马里奥靠吃蘑菇成长,特征是大鼻子、头戴帽子、身穿背带裤,还留着胡子。与他的双胞胎兄弟路易基一起,长年担任任天堂的招牌角色。

腾讯云软件源

腾讯云软件源

为解决软件依赖安装时官方源访问速度慢的问题,腾讯云为一些软件搭建了缓存服务。您可以通过使用腾讯云软件源站来提升依赖包的安装速度。为了方便用户自由搭建服务架构,目前腾讯云软件源站支持公网访问和内网访问。

Spring

Spring

Spring框架(Spring Framework)是由Rod Johnson于2002年提出的开源Java企业级应用框架,旨在通过使用JavaBean替代传统EJB实现方式降低企业级编程开发的复杂性。该框架基于简单性、可测试性和松耦合性设计理念,提供核心容器、应用上下文、数据访问集成等模块,支持整合Hibernate、Struts等第三方框架,其适用范围不仅限于服务器端开发,绝大多数Java应用均可从中受益。

Rocky Linux

Rocky Linux

Rocky Linux(中文名:洛基)是由Gregory Kurtzer于2020年12月发起的企业级Linux发行版,作为CentOS稳定版停止维护后与RHEL(Red Hat Enterprise Linux)完全兼容的开源替代方案,由社区拥有并管理,支持x86_64、aarch64等架构。其通过重新编译RHEL源代码提供长期稳定性,采用模块化包装和SELinux安全架构,默认包含GNOME桌面环境及XFS文件系统,支持十年生命周期更新。

用户登录
用户注册