PYTHON:将字典中的值与>进行比较时(TypeError:“ float”对象不可下标)

我正在尝试比较字典中的每个值和建议打印的最大值。

comparer={'One': 195.706,'Two': 27,'Three': 38.5}

if comparer['One'][1] > comparer['Two'][1]:
    if comparer['One'][1] > comparer['Three'][1]:
        suggest = 'One'
    else:
        suggest = 'Three'
else:
    if comparer['Two':1] > comparer['Three':1]:
        suggest = 'Two'
    else:
        suggest = 'Three'
print(suggest)

给出错误 追溯(最近一次通话):   文件“ C:/用户/ $$$,第3行,在     如果比较器['One'] [1]>比较器['Two'] [1]: TypeError:“浮动”对象不可下标

bati0229 回答:PYTHON:将字典中的值与>进行比较时(TypeError:“ float”对象不可下标)

词典中的值不是列表。从字典中访问数据时只需删除[1]

comparer={'One': 195.706,'Two': 27,'Three': 38.5}

    if comparer['One'] > comparer['Two']:
        if comparer['One'] > comparer['Three']:
            suggest = 'One'
        else:
            suggest = 'Three'
    else:
        if comparer['Two'] > comparer['Three']:
            suggest = 'Two'
        else:
            suggest = 'Three'
    print(suggest)
,

您要实现的目标是访问字典键的值并对其进行比较操作。

一旦使用comparer [key]获得字典值,您只需要执行比较操作即可。

您已经具有“一个”键的值:

In [3]: comparer['One']
Out[3]: 195.706

同样,您也可以获取其他键的值。

当您尝试使用索引位置值访问浮点值(如上)时,将发生错误,因为浮点值不可下标,所以该操作将不起作用。这种类型的元素访问(具有索引位置)可用于列表,其中列表中有多个项目,而您想访问其中之一:

In [1]: comparer={'One': 195.706,'Three': 38.5}

In [2]: comparer['One'][1]
---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-2-8c4e35f05dab> in <module>
----> 1 comparer['One'][1]

TypeError: 'float' object is not subscriptable

现在只需更改如下代码即可。在这里,我们以与上述类似的方式访问每个键的值并进行比较。

In [4]: comparer={'One': 195.706,'Three': 38.5}
   ...: 
   ...: if comparer['One'] > comparer['Two']:
   ...:     if comparer['One'] > comparer['Three']:
   ...:         suggest = 'One'
   ...:     else:
   ...:         suggest = 'Three'
   ...: else:
   ...:     if comparer['Two'] > comparer['Three']:
   ...:         suggest = 'Two'
   ...:     else:
   ...:         suggest = 'Three'
   ...: print(suggest)
One
,

我建议您使用here

comparer = {'One':195.706,'Two':27,'Three':38.5}

# given an iterable of pairs return the key corresponding to the greatest value
# def argmax(pairs):
#     return max(pairs,key=lambda x: x[1])[0]

# given an iterable of values return the index of the greatest value
# def argmax_index(values):
#     return argmax(enumerate(values))

更新

def keymax(dictionnaire):
    return max(dictionnaire.items(),key=lambda x : x[1])[0]
print(comparer)
,

您可以尝试以下方法:

if comparer["one"] > comparer["two"] and comparer["one"] > comparer["three"]: 
     suggest = "One"
elif comparer["two"] > comparer["one"] and comparer["two"] > comparer["three"]:
     suggest = "Two"
else:
     suggest = "Three"

print(suggest)

或者您可以尝试最简单的方法:

max_value = max(comparer)
get_key = {v:k for k,v in comparer.items()}
suggest = get_key[max_value]
print(suggest)
,

我认为您正在以错误的方式进行操作。 您可以从字典中获取值:

values = comparer.values()

然后根据您的需要打印这些值的最大值或将其分配以建议:

suggest = max(values)
print(suggest)
本文链接:https://www.f2er.com/2980626.html

大家都在问