下面的代碼是根據值的頻率排序的,值是相同的,它按降序對鍵進行排序。sort 函式中的 lambda 如何實作這一點?
c = Counter(nums)
nums.sort(key=lambda x: (c[x], -x))
return nums
Input: nums = [2,3,1,3,2]
Output: [1,3,3,2,2]
Explanation: '2' and '3' both have a frequency of 2, so they are sorted in decreasing order.
uj5u.com熱心網友回復:
這是一個 lambda 函式:
key=lambda x: (c[x], -x)
也可以這樣寫:
def key(x):
return (c[x], -x)
呼叫 sort 時,它將串列中的每個元素發送到 lambda 函式,并使用該函式的結果來確定元素進入的順序。在這種情況下,lambda 函式接受一個數字 ( x) 并回傳x來自 counter c,以及x元組中的否定版本。
c = Counter([2,3,1,3,2])
給我們這個:
Counter({2: 2, 3: 2, 1: 1})
現在,當針對 lambda 函式單獨呼叫原始串列的每個元素時,回傳的內容如下:
>>> for i in [2,3,1,3,2]:
... print(f"{i}: {key(i)}")
...
2: (2, -2)
3: (2, -3)
1: (1, -1)
3: (2, -3)
2: (2, -2)
由于 lambda 函式,您看到的元組列是 sort 函式正在使用的內容。
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/450096.html
標籤:Python python-3.x
上一篇:如何在Python上使用APIQRMonkey和post或get方法
下一篇:如何在資料框中向量化這個計算
