如何用Python一行代码获取字典中各值列表首元素的最大值?
一行代码实现字典中排序键对应列表首元素的最大值
当然可以!你完全可以用Python的生成器表达式结合内置函数把这段循环代码简化成一行,既简洁又高效。
先回顾一下你原来的逻辑:
对字典的键进行排序,遍历每个排序后的键,取出对应列表的第0个元素存入临时列表,最后求这个列表的最大值
对应的一行代码写法如下:
max(soilLayer[name][0] for name in sorted(soilLayer.keys()))
代码解释:
sorted(soilLayer.keys()):和你原来的逻辑一致,先对字典的键进行排序soilLayer[name][0]:遍历排序后的每个键,取出对应列表的首元素(也就是你代码里position=0对应的元素)- 整个表达式是一个生成器表达式,它会按需生成每个元素,不需要像原来那样创建额外的
height列表占用内存 - 最后直接把生成器表达式传给
max()函数,一步得到最大值
如果你用的是Python 3.7及以上版本,其实sorted(soilLayer)就等价于sorted(soilLayer.keys()),所以代码还可以再简化一点:
max(soilLayer[k][0] for k in sorted(soilLayer))
这样写既保留了你原来代码的排序逻辑,又把整个流程压缩成了一行,可读性也不会打折扣~
内容的提问来源于stack exchange,提问作者Abe
相关产品推荐
相关产品推荐

