0

给定一本字典...

result={'A - - -': ['ALLY'], '- - A -': ['DEAL'], '- - - A': ['BETA'], '- - - -': ['COOL',    'ELSE', 'FLEW', 'GOOD', 'HOPE', 'IBEX']}

我将如何将变量“答案”分配给具有最多元素的键?我试过了...

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

但这让我无处可去。由于最大的家庭是 ['COOL', 'ELSE', 'FLEW', 'GOOD', 'HOPE', 'IBEX'] 我希望能够将 '- - - -' 分配给 'Answer'。

4

3 回答 3

4

max()接受一个key关键字参数,它允许你给出一个排序函数:

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

这将比构建一个额外的列表来排序更有效。

于 2013-04-12T16:35:06.847 回答
-1

您正在按列表本身而不是它们的长度进行排序:

inverse = [(len(value), key) for key, value in result.items()]
Answer = max(inverse)[1]
于 2013-04-12T16:31:47.267 回答
-2
import operator
dict(sorted(result.iteritems(), key=operator.itemgetter(1), reverse=True)[:1])

你有你的最大值,现在只是给它分配一些东西?

于 2013-04-12T16:33:10.697 回答