Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/356.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在python中从字典中的一组子键中查找最大值_Python_List_Dictionary_Max_Min - Fatal编程技术网

在python中从字典中的一组子键中查找最大值

在python中从字典中的一组子键中查找最大值,python,list,dictionary,max,min,Python,List,Dictionary,Max,Min,我有一个类似的列表(这是安然的数据,因此是公开的,所以我很确定我没有违反任何规则): 我试图列出所有已行使的股票期权值,然后我想找到非NaN值并执行最大/最小值 我这样做了,但我得到了一个错误的答案,我不知道为什么: eso = [] for k,v in data_dict.items(): # name.append[str(k)] eso.append(v['exercised_stock_options']) # Remove NaN values in list es

我有一个类似的列表(这是安然的数据,因此是公开的,所以我很确定我没有违反任何规则):

我试图列出所有
已行使的股票期权
值,然后我想找到非
NaN
值并执行最大/最小值

我这样做了,但我得到了一个错误的答案,我不知道为什么:

eso = []
for k,v in data_dict.items():
    # name.append[str(k)]
    eso.append(v['exercised_stock_options'])

# Remove NaN values in list
eso = [x for x in eso if str(x) != 'NaN']

print(eso)

sorted(eso)
print(eso[0])
print(eso[-1])
但后来我看到了这个答案,它是正确的,但我看不出我做错了什么

stock = []
for i in data_dict:
    if (data_dict[i]["exercised_stock_options"]=='NaN'):
        pass
    else:
        stock.append(float(data_dict[i]["exercised_stock_options"]))

ma = max(stock)
mi = min(stock)

print ("Exercised stock options maximum: ", ma, " minimum: ", mi)

在第一种情况下,值被排序为字符串,但是,您希望将它们排序为数字。这就是为什么在第二种情况下使用隐式类型转换(带有
float
函数)


您可能需要将行
eso.append(v['exercised\u stock\u options')
更改为
eso.append(float(v['exercised\u stock\u options'))
。但是您应该首先去掉“NaN”值。

sorted
不会更改列表,它只是返回一个排序版本。将
sorted(eso)
替换为
eso.sort()
,这将破坏性地排序
eso
。或者
eso=sorted(eso)
的可能重复。另一点,您的列表是字符串,而您显示的解决方案是将值强制转换为float。不确定这样的排序是否会影响结果。
stock = []
for i in data_dict:
    if (data_dict[i]["exercised_stock_options"]=='NaN'):
        pass
    else:
        stock.append(float(data_dict[i]["exercised_stock_options"]))

ma = max(stock)
mi = min(stock)

print ("Exercised stock options maximum: ", ma, " minimum: ", mi)