字典中的Python max列表

2024-06-13 01:50:31 发布

您现在位置:Python中文网/ 问答频道 /正文

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

max(test_sentences, key=test_sentences.get)

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

^{pr2}$

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

u'fine my name is tomi'

因为列表的[0]元素是15,这是最大的。在

实际上我写的代码很管用:

max(test_sentences, key=test_sentences.get)

但我不明白为什么。。。有人能帮我解释一下吗。。。只是想防止错误。在

谢谢你!在


Tags: key函数test目的列表get字典情况
3条回答

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

max(test_sentences, key=test_sentences.get)
max(test_sentences.iterkeys(), key=test_sentences.get)

接下来是key参数。它是一个将第一个参数中的每个项映射到返回值以进行比较的函数。对于test_sentences中的任何keytest_sentences.get(key)当然是{}的映射值。所以你得到了所有列表值的比较。在

最后,当您比较两个列表时,事实上,比较会对每个列表中的每个项目使用字典顺序。你认为你在使用第一个元素,但实际上没有,尽管你可以得到同样的结果。有关详细信息,请阅读here。在

你需要什么,我想应该是的

^{pr2}$

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

当您对dict调用max时,实际上是对dict的键执行操作,而忽略这些值。其他将字典视为iterable的操作也是如此,例如for k in dict:等。因此,如果只执行max(test_sentences)操作,则只会获得字典的最后一个键(按字母顺序)。如果你想用其他东西来排序,你可以用key来传递它,在这里你可以提供一个函数来将你的值转换成你要排序的实际值。dict.get(k)dict[k]相同,因此在代码中,您只需对每个键说一句,就可以从dict中获取相应的值,并使用它来排序。列表上的排序顺序首先使用第一个值,这就是您的要求。在

相关问题 更多 >