【问题标题】:Python Sort LambdaPython 排序 Lambda
【发布时间】:2015-11-17 00:23:25
【问题描述】:

排序键 Lambda 参数

我不明白 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

【问题讨论】:

  • -e[0]-1 * (the_first_element_in_e),即对于 e == [2, 'e'],它将是 -2。究竟是什么让您感到困惑?
  • -2 如何帮助我们对键和值进行排名?我们正在尝试创建一个程序,以降序显示单词出现的次数。
  • 乘以 -1 意味着它们将首先排序,而不是通常的最低排序。删除- 看看有什么变化。
  • 哦,它只会颠倒排序函数的顺序,但不会将任何值变为负数?哦,我明白了。此外,我们必须创建一个 lambda 函数来遍历列表索引。
  • 您正在创建一个新对象进行排序,而不是更改原始对象。这是一个问题吗?

标签: python sorting dictionary lambda key


【解决方案1】:

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()

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

现在,它的作用是-根据嵌套列表的第一个元素对列表进行反向排序,并在嵌套排序列表的内部元素上正常排序,即

前 2,3,4,5 等被考虑用于以相反的顺序对列表进行排序(-e[0] == -2,-3,-4...),然后我们在基础上对元素进行排序内部排序的第二个元素(e[1] == 'w', 'a', 'b'...)

【讨论】:

  • 这就是我一直在寻找的答案。
  • 这给出了相同的答案...data.sort( key = lambda e: -e[0] ) 那么data.sort( key = lambda e: [-e[0], e[1]] ) 的意义何在?有什么不同?
  • 我不确定您是否收到此通知。请在您回复后将您的答案标记为正确,谢谢。 @死亡追猎者
  • @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, 'a']。参见 [4, 'c'], [4, 'b'] 和 [4, 'b'], [4, 'c']。
猜你喜欢
  • 2021-01-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-08-25
  • 1970-01-01
  • 1970-01-01
  • 2015-12-06
相关资源
最近更新 更多