Python排序Lambda 排序键Lambda参数

Python排序Lambda 排序键Lambda参数,python,sorting,dictionary,lambda,key,Python,Sorting,Dictionary,Lambda,Key,我不理解lambda参数是如何工作的,[-e[0],e[1]]部分尤其令人困惑。我已经删除了所有多余的打印代码,也从我的问题中删除了所有不必要的代码。参数-e[0]实现了什么?e[1]实现了什么 data.sort(key = lambda e: [-e[0],e[1]]) # --> anonymous function print ("This is the data sort after the lambda filter but NOT -e %s" %data)` [in] '

我不理解lambda参数是如何工作的,
[-e[0],e[1]]
部分尤其令人困惑。我已经删除了所有多余的打印代码,也从我的问题中删除了所有不必要的代码。参数-e[0]实现了什么?e[1]实现了什么

data.sort(key = lambda e: [-e[0],e[1]]) # --> anonymous function
print ("This is the data sort after the lambda filter but NOT -e %s" %data)`

[in] 'aeeccccbbbbwwzzzwww'
[out] This is the data before the sort [[2, 'e'], [4, 'c'], [1, 'a'], [4, 'b'], [5, 'w'], [3, 'z']]
[out] This is the data sort before the lambda filter [[1, 'a'], [2, 'e'], [3, 'z'], [4, 'b'], [4, 'c'], [5, 'w']]
[out] This is the data sort after the lambda filter but NOT -e [[1, 'a'], [2, 'e'], [3, 'z'], [4, 'b'], [4, 'c'], [5, 'w']]
[out] This is the data sort after the lambda filter [[5, 'w'], [4, 'b'], [4, 'c'], [3, 'z'], [2, 'e'], [1, 'a']]

[out] w 5
[out] b 4
[out] c 4

l=[[2',e'],[4',c'],[1',a'],[4',b'],[5',w'],[3',z']]

>>> l.sort()
正常排序:首先考虑嵌套列表的第一个元素,然后考虑第二个元素

>>>l.sort(key=lambda e: [e[0], e[1]])
与l.sort()类似

现在,我们要做的是——根据嵌套列表的第一个元素对列表进行反向排序,并根据嵌套排序列表的内部元素进行正常排序,即


第一个2,3,4,5等被考虑用于按相反顺序对列表进行排序(-e[0]=-2,-3,-4…),然后我们根据第二个元素对元素进行内部排序(e[1]='w','a','b'…)

-e[0]
-1*(e中的第一个元素
,即对于
e==2,'e'
。到底是什么让你困惑?使用
-2
如何帮助我们对键和值进行排序?我们正在尝试创建一个程序,以降序显示一个单词出现的次数。乘以-1意味着它们将首先排序最高,而不是通常的最低排序。移除
-
,看看有什么变化。哦,它只会颠倒排序函数的顺序,但不会将任何值变为负值?哦,我明白了。此外,我们还必须创建一个lambda函数来迭代列表索引。您正在创建一个新对象来进行排序,而不是更改原始对象。这是一个问题吗?这是我一直在寻找的答案。这给出了相同的答案<代码>数据.sort(key=lambda e:-e[0])那么
数据.sort(key=lambda e:[-e[0],e[1]])的意义是什么呢?这有什么不同?我不确定你是否收到了这方面的通知。一旦您回复,我会将您的答案标记为正确,谢谢@死亡-Stalker@Rafeh不,
data.sort(key=lambda e:-e[0])=>[5',w'],[4',c'],[4',b'],[3',z'],[2',e'],[1',a']
data.sort(key=lambda e:[-e[0],e[1]])=>[5',w'],[4',b'],[4',c'],[3',z'],[2',e'],[1',[1',a']
参见[4',c'],[4',[4',b']。
>>>l.sort(key=lambda e: [-e[0], e[1]])