返回循环遍历字典中键的第一个值条目的最大值

时间:2018-04-11 10:02:45

标签: python python-3.x list dictionary

我想获得第一个值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 ) )

2 个答案:

答案 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