这几天遇到了好几个面试,现在总结一下面试题以及相应的解法。(虽然面试的时候掌柜发挥的不怎么好,没有拿到offer。但是换个角度想想,通过多面试去发现自己的不足,也对自己是另一种锻炼和成长吧😁。)好了,言归正传,下面看面试题,因为这个公司偏向于用Python来处理数据和挖掘数据,所以面试的问题也都是跟Python数据分析相关的。
- 如何查找字典中value最大值对应的key?
方法一:可以用max(dict,key=dict.get)方法获得字典dict中value的最大值所对应的键;max(dict, key)方法首先遍历迭代器,并将返回值作为参数传递给key对应的函数,然后将函数的执行结果传给key,并以此时key值为标准进行大小判断,返回最大值。可以参看下面的示例:
2. 方法二:Max结合lambda函数,max(dict, key=lambda k: dict[k])
此题到这里就结束了,但是掌柜打算拓展一下。
首先看如何求字典值的最大值或最小值?如何求出带key的最大值?
可以知道求字典最值的方法就是max(dict.values())/min(dict.values())。
那么如何求字典里面带有key的最大值/最小值呢?
解答👉:用zip函数和max函数,max/min(zip(dict.values(),dict.keys()))即可!
PS: 要注意的是 zip() 函数创建的是一个只能访问一次的迭代器,像下面这样就不行:
PPS:
再拓展一下,刚刚上面求带key的最大值显示的时候为什么要zip先对调键和值的位置呢?
答:因为如果你不对调,zip里面两个元组就会按照先排序前面key的大小,就像下面这样,字母最大的是I,所以他会返回最大值是IBM…显然这不是我们想要的结果!
接着掌柜又想到既然问了字典,那么再再拓展一下关于列表的求最值的方法,万一下次问这个🧐:
好了,一道求字典最值的题一下就被掌柜拓展开了😂,最后画个脑图总结一下第一题的知识点:
参考资料:
Python手册