全国旗舰校区

不同学习城市 同样授课品质

北京

深圳

上海

广州

郑州

大连

武汉

成都

西安

杭州

青岛

重庆

长沙

哈尔滨

南京

太原

沈阳

合肥

贵阳

济南

下一个校区
就在你家门口
+
当前位置:首页  >  技术干货

python面试题,一道题考察Python基础能力

发布时间:2021-01-07 16:11:00
发布人:小千

一道面试题就能检验出你的Python基础如何,想知道题目是什么吗?往下看

问:将 data 转换成 new_data 这种形式,写出转换过程

1

可以看出,转换的过程是将 key 的下划线进行拆分,然后下划线后边的字符嵌套在前面字符的值中。

感兴趣就打开 IDE,自己先试着解一下。

解题思路

你应该很快想到,主要思路是将下划线 split 后,然后依次使用字符生成内层字典,当达到最后一个字符时将数字作为值。

那么关键点在于,如何不断地获得内层字典去修改呢?实际本题就是考察你是否理解 Python 字典是引用传递这个特性。

什么是引用传递?我们知道 Python 中字典和列表对象都是可变对象,同一个字典对象的变量不管如何传递,只要改变其中一个变量会同步修改其他变量。这是因为变量存储的只是可变对象的引用,无论调用哪个变量,返回的依然是同一个对象。比如:

2

如上,利用这个特性,将内层字典赋值给一个中间变量,然后改变这个中间变量,即可同步修改最终的 new_data 变量。

根据这个思路,初步代码如下:

3

这也是群友给出的第一版答案,这样写并没有多大问题,但是代码比较繁琐,肯定还有优化空间。

我们可以只使用一个中间变量即可,进一步优化:

4

上面这个代码看似很简洁了,但是仍然还有两个 if 判断,如果不是使用了三元表达式的话,还会更多行。

所以可以进一步优化:

5

我们省略掉了 last 来判断最后一个字符的索引,直接通过 keys[:-1] 避开最后一个字符,末尾再单独生成数字键值对。

这里还使用字典的一个内置方法 —— setdefault。

dict.setdefault(key, default=None) 方法和 get 方法类似,只是如果键不存在于字典中,不仅会返回 default 参数的值,还同时会用该值自动生成一个键值对。

6

最终我们使用了 6 行代码就解出该题,这也是接近最简代码。

如果使用字典引用的特性是合格分的话,那么当你用出 setdefault 这个方法后,面试官已经给你打了优秀,因此一定要熟悉基础数据对象的所有内置方法

最后欢迎大家添加我们的Python技术交流qq群:790693323 加群找管理免费领取学习资料和项目代码,等你来哦~~~

相关文章

USB Type C电缆正反插都可以?

USB Type C电缆正反插都可以?

2023-10-14
EditorConfig的作用是什么?

EditorConfig的作用是什么?

2023-10-14
Call Stack(调用栈)是什么?

Call Stack(调用栈)是什么?

2023-10-14
RS232电平和TTL电平有什么不同?

RS232电平和TTL电平有什么不同?

2023-10-14

最新文章

常见网络安全面试题:Windows常用的命令有哪些?

常见网络安全面试题:Windows常用的命令有哪些?

2023-10-09
常见网络安全面试题:根据设备告警如何展开排查?

常见网络安全面试题:根据设备告警如何展开排查?

2023-10-09
常见网络安全面试题:mysql加固呢?(数据库加固)

常见网络安全面试题:mysql加固呢?(数据库加固)

2023-10-09
常见网络安全面试题:windows和linux加固?(操作系统加固)

常见网络安全面试题:windows和linux加固?(操作系统加固)

2023-10-09
在线咨询 免费试学 教程领取