Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/335.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
字典中的python lambda排序_Python - Fatal编程技术网

字典中的python lambda排序

字典中的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

我正在练习leetcode问题:

Leetcode问题:

给定一个非空的单词列表,返回k个最频繁的元素。 你的答案应该按频率从高到低排序。如果两个单词的频率相同,那么字母顺序较低的单词排在第一位

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排序。