字典中的python lambda排序
我正在练习leetcode问题: Leetcode问题: 给定一个非空的单词列表,返回k个最频繁的元素。 你的答案应该按频率从高到低排序。如果两个单词的频率相同,那么字母顺序较低的单词排在第一位字典中的python lambda排序,python,Python,我正在练习leetcode问题: Leetcode问题: 给定一个非空的单词列表,返回k个最频繁的元素。 你的答案应该按频率从高到低排序。如果两个单词的频率相同,那么字母顺序较低的单词排在第一位 Example 1: Input: ["i", "love", "leetcode", "i", "love", "coding"], k = 2 Output: ["i", "love"] 我看到其中一个讨论解决了这个问题。但是我不熟悉lambda,有人能帮我理解lambda x:(-count[x
Example 1:
Input: ["i", "love", "leetcode", "i", "love", "coding"], k = 2
Output: ["i", "love"]
我看到其中一个讨论解决了这个问题。但是我不熟悉lambda,有人能帮我理解lambda x:(-count[x],x)
的意思吗?谢谢
class Solution:
def topKFrequent(self, words: List[str], k: int) -> List[str]:
count = Counter(words)
count = sorted(count, key = lambda x: (-count[x], x))
output = count[:k]
return output
lambda是函数的特例,这些函数没有名称,只包含隐式返回语句
def somename(x): return (-count[x], x)
count = sorted(count, key = somename)
相当于你的
count = sorted(count, key = lambda x: (-count[x], x))
除了它在名称空间中定义了
somename
。在官方Python教程中。谢谢你的回复,但我不明白为什么(-count[x],x)
?元组是如何排序的?元组是按字典顺序排序的,即与字符串类似,按第一个元素排序,如果第一个元素相等,则按第二个元素排序等。因此,按(-count[x],x)
排序是按-count[x]
排序,但在具有相同计数的值中,它只按x排序。