【问题标题】:Sort a list of ints and floats with negative and positive values?对具有负值和正值的整数和浮点数列表进行排序?
【发布时间】:2012-11-10 02:17:33
【问题描述】:

我正在尝试按升序对未知值(整数或浮点数或两者)列表进行排序。即,[2,-1,1.0] 将变为 [-1,1.0,2]。不幸的是, sorted() 函数似乎不起作用,因为它似乎按绝对值降序排序。有什么想法吗?

【问题讨论】:

标签: sorting python-2.7 absolute-value


【解决方案1】:

我遇到了同样的问题。答案:如果您将数字作为字符串,Python 将按绝对值对数字进行排序。因此,作为您的密钥,请确保包含一个 int() 或 float() 参数。我的工作语法是

data = sorted(data, key = lambda x: float(x[0]))

... lambda x 部分只是给出了一个函数,它输出你想要排序的东西。所以它在我的列表中取一行,找到第 0 个浮点元素,并按此排序。

【讨论】:

  • 为了扩展您的答案,2'2' 之间的区别在于一个是整数,另一个是字符串。字符串包含数字的事实不会改变它的排序方式,因为字符串是按字典顺序排序的(就像在字典中一样),所以'-2' < '-5'(因为'-' == '-''2' < '5')。另一方面,整数是按值排序的。
【解决方案2】:

除了doublefelix,下面的代码给出了字符串的绝对顺序。

siparis=sorted(siparis, key=lambda sublist:abs(float(sublist[1])))

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-12-04
    • 2016-03-08
    相关资源
    最近更新 更多