我想获得第一个值10,40的最大值 - > 40。 我可以在下面使用它,但是在一行中有一个python方式而不是for循环
soilLayer[0] = [ 10, 50, 0.3, 1600, 1800, 5, 30 ]
soilLayer[1] = [ 40, 50, 0.3, 1600, 1800, 5, 30 ]
heigth = []
position = 0
for name in sorted( soilLayer.keys() ):
heigth.append( soilLayer[name][position] )
print( max( heigth ) )
答案 0 :(得分:1)
首先,当您想要找到最大值时,您不需要排序。您可以使用operator.itemgetter
一次获取多个项目并使用zip来获取第一个项目。然后,您可以获得结果max
上的所有内容。
from operator import itemgetter
max(next(zip(*itemgetter(*soilLayer.keys())(soilLayer)))
答案 1 :(得分:1)
也可以使用非功能性解决方案:
soilLayer = {0: [ 10, 50, 0.3, 1600, 1800, 5, 30 ],
1: [ 40, 50, 0.3, 1600, 1800, 5, 30 ]}
res = max(list(zip(*soilLayer.values()))[0]) # 40
效率低@Kasramvd's functional solution。
另一种方法是,如果您对使用第三方库感到满意,那就是使用numpy
:
import numpy as np
res = np.array(list(soilLayer.values()))[:, 0].max() # 40.0