我在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)
但我不明白为什么。。。有人能帮我解释一下吗。。。只是想防止错误。在
谢谢你!在
^{} 函数将iterable作为第一个参数,当您迭代
dict
时,它的所有键都将被迭代。所以这些都是一样的接下来是}的映射值。所以你得到了所有列表值的比较。在
key
参数。它是一个将第一个参数中的每个项映射到返回值以进行比较的函数。对于test_sentences
中的任何key
,test_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中获取相应的值,并使用它来排序。列表上的排序顺序首先使用第一个值,这就是您的要求。在相关问题 更多 >
编程相关推荐