我正在使用 Python 中的内置 max() 函数,如下所示:
max(test_sentences, key=test_sentences.get)
我使用它的目的是在字典列表(test_sentences)中查找最大值。 我想取回该键,该键在该键旁边的列表中的 [0] 位置上具有最大值。 一个例子(请忽略你'):
{u'my name is tomi': [0, 1, 10, u'my', u'name', u'is', u'tomi'],
u'your name is tomi': [0, 1, 10, u'your', u'name', u'is', u'tomi'],
u'hello bello bye fine': [5, 42, 10, u'hello', u'bello', u'bye', u'fine'],
u'okkay tomi': [1, 1, 10, u'okkay', u'tomi'],
u'fine my name is tomi': [15, 1, 10, u'fine', u'my', u'name', u'is', u'tomi']}
在这种情况下,获胜者将是:
u'fine my name is tomi'
因为列表的 [0] 元素是 15,这是最大的。
实际上我写的代码就可以工作:
max(test_sentences, key=test_sentences.get)
但我不明白为什么......有人可以帮我解释一下......只是想防止错误。
谢谢!
最佳答案
当你在字典上调用 max
时,你实际上是在对字典的键进行操作,并忽略值。对于将字典视为可迭代的其他操作也是如此,例如。 for k in dict:
等。因此,如果您只执行 max(test_sentences)
您将只获得字典的最后一个键(按字母顺序排列)。如果您想使用其他内容进行排序,可以使用 key
传递它,其中提供一个函数将您的值转换为您要排序的实际内容。 dict.get(k)
与 dict[k]
相同,因此在您的代码中,您只需对每个键说,从字典中获取相应的值,并用它来排序。列表上的排序顺序首先使用第一个值,这就是您的要求。
关于Python 字典中的最大列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37040677/