字典中的Python max列表

字典中的Python max列表,python,dictionary,max,Python,Dictionary,Max,我在Python中使用内置的max()函数,如: max(test_sentences, key=test_sentences.get) 我使用它的目的是在字典的列表(测试句子)中找到一个最大值。 我想取回该键,它在该键旁边的列表中[0]位置上具有最大值。 例如(请忽略u’): 在这种情况下,获胜者将是: u'fine my name is tomi' 因为列表的[0]元素是15,这是最大的 实际上,我写的代码很有效: max(test_sentences, key=test_sentenc

我在Python中使用内置的max()函数,如:

max(test_sentences, key=test_sentences.get)
我使用它的目的是在字典的列表(测试句子)中找到一个最大值。 我想取回该键,它在该键旁边的列表中[0]位置上具有最大值。 例如(请忽略u’):

在这种情况下,获胜者将是:

u'fine my name is tomi'
因为列表的[0]元素是15,这是最大的

实际上,我写的代码很有效:

max(test_sentences, key=test_sentences.get)
但我不明白为什么。。。有人能帮我解释一下吗。。。我只是想防止犯错误


谢谢大家!

dict.get()
返回传递的键的值。Python中的序列被简单地排序。将两者放在一起意味着值为
[15,…]
的键是从
max()

返回的。当您在dict上调用
max
时,实际上是在dict的键上执行操作,并忽略这些值。其他将字典视为iterable的操作也是如此,例如dict:中k的
等。因此,如果您只需执行
max(测试句子)
操作,您将只获得字典的最后一个键(按字母顺序)。如果您想使用其他内容进行排序,可以使用
键将其传入,其中提供了一个函数,可以将您的值转换为您要排序的实际内容
dict.get(k)
dict[k]
相同,因此在代码中,您只需对每个键说,从dict中获取相应的值,并使用它进行排序。列表上的排序顺序首先使用第一个值,这就是您的要求。

该函数将iterable作为第一个参数,当您迭代一个
dict
时,您将迭代它的所有键。所以这些都是一样的

max(test_sentences, key=test_sentences.get)
max(test_sentences.iterkeys(), key=test_sentences.get)
然后是
参数。它是一个函数,将第一个参数中的每个项映射到返回值以进行比较。对于
测试句子中的任何
测试句子。get(key)
当然是
的映射值。因此,您将比较所有列表值

最后,当您比较两个列表时,实际上比较使用了每个列表中每个项目的字典顺序。您认为您正在使用第一个元素,但实际上没有,尽管您可以得到相同的结果。请阅读更多细节

对于你需要的,我想应该是

max(test_sentences.iterkeys(), key=lambda key: test_sentences[key][0])
max(test_sentences.iterkeys(), key=lambda key: test_sentences[key][0])