Python 字典中的最大列表

标签 python dictionary max

我正在使用 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/

相关文章:

python - 用户作为 Django 中的外键

python - 如何优化 PyQt QSortFilterProxyModel 过滤器的重新实现?

python - re.search 和 re.match 有什么区别?

arrays - 哈希表 : Ransom Note - Hacker Rank in Swift Timed Out

python - 如何获取嵌套字典列表中所有键的路径

python - 根据值索引和字母顺序对python字典进行排序

r - 使用 R 的字典映射

sql - T-sql每天获取最小值和最大值

php - MYSQL如何找到字段的最大值?

matlab - 如何将矩阵中的一行设置为 0?