在字典中查找最小值 - TypeError int 对象不可调用



我的 ML 类让我在决策树中查找错误值最小的叶子。叶子和错误值存储在字典中(在输出下方(

{5: 35044.51299744237, 25: 29016.41319191076, 50: 27405.930473214907, 100: 27282.50803885739,250: 27893.822225701646, 500: 29454.18598068598}

现在,此字典中的最佳解决方案应该是 100,因为它的错误率最低。

代码片段如下:

candidate_max_leaf_nodes = [5, 25, 50, 100, 250, 500]
for i in candidate_max_leaf_nodes:
#stores key,value pair of leaf_nodes, and their error values
mydict[i] = get_mae(i,train_X,val_X,train_y,val_y)
print(mydict)

#  Find the best value of max_leaf_nodes (it will be either 5, 25, 50, 100, 250 or 500)

我尝试的最小值的代码如下:

tmp = min(mydict.values()) 
best_tree_size = [key for key in mydict if mydict[key] == tmp] 

但是,我不断收到类型错误:"int"对象不可调用。 有人可以解释我哪里出错了吗?我能以更优化的方式找到最小值吗?

您必须定义一个名为min的整数变量。不要这样做(或在调用min()函数之前del min(。

试试这个

my_dict = {'x':500, 'y':5874, 'z': 560}
key_min = min(my_dict.keys(), key=(lambda k: my_dict[k]))

TypeError: 'int' 对象不可调用

由于这表示TypeError,这可能是因为为my_dict返回的值可能是"Int"而不是"Dict"。您的代码似乎没有错误。检查字典是否正确。你的代码对我有用。

mydict = {'a':50, 'b':500, 'c': 50, 'd':5000, 'e':50000, 'f': 50}

tmp = min(mydict.values())

best_tree_size = [key for key in mydict if mydict[key] == tmp]

print(best_tree_size)

["a"、"c"、"f"]

最新更新