Python 字典:如何找到元素的最大值

Python 字典:如何找到元素的最大值,python,python-3.x,Python,Python 3.x,给我一本 result={'A - - -': ['ALLY'], '- - A -': ['DEAL'], '- - - A': ['BETA'], '- - - -': ['COOL', 'ELSE', 'FLEW', 'GOOD', 'HOPE', 'IBEX']} 我将如何为元素最多的键分配一个变量“Answer”?我试过 inverse=[(value,key) for key, value in result.items()] Answer=max(inverse) 但这让

给我一本

result={'A - - -': ['ALLY'], '- - A -': ['DEAL'], '- - - A': ['BETA'], '- - - -': ['COOL',    'ELSE', 'FLEW', 'GOOD', 'HOPE', 'IBEX']}
我将如何为元素最多的键分配一个变量“Answer”?我试过

inverse=[(value,key) for key, value in result.items()]
Answer=max(inverse)

但这让我无从下手。由于最大的家族是['COOL'、'ELSE'、'flied'、'GOOD'、'HOPE'、'IBEX'],我希望能够将'--'分配给'Answer'。

您是根据列表本身而不是其长度排序的:

inverse = [(len(value), key) for key, value in result.items()]
Answer = max(inverse)[1]
您有了最大值,现在只需给它赋值?

接受一个
关键字参数,该参数允许您提供排序函数:

>>> answer, _ = max(result.items(), key=lambda x: len(x[1]))
>>> answer
'- - - -'

这将比构造一个额外的列表进行排序更有效。

@FrancisAvila只在2.x中有效,参数解包在3.x中被删除,因此最好在新代码中避免。-1,这根本没有意义。根据排序后的值制作字典会删除您刚才所做的排序,因为
dict
s没有顺序。如果您选择有顺序,dict可以有顺序。其次,你需要它,或者至少是为了从整个dict中得到1个值,而不知道哪个值是最大的。因为在没有已知值的情况下,无法对dict执行[:1]或[…任何..]操作。
dict
对象不存储顺序。您的新方法通过只包含一个项来修复该缺陷,但是
dict
的构造毫无意义。除此之外,您的答案仍然会得到错误的结果,即使您进行了编辑。
>>> answer, _ = max(result.items(), key=lambda x: len(x[1]))
>>> answer
'- - - -'