对具有负值和正值的整数和浮点数列表进行排序?
Posted
技术标签:
【中文标题】对具有负值和正值的整数和浮点数列表进行排序?【英文标题】: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() 函数似乎不起作用,因为它似乎按绝对值降序排序。有什么想法吗?
【问题讨论】:
sorted([2,-1,1.0])
yields [-1, 1.0, 2]
。你有什么问题?
【参考方案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])))
【讨论】:
以上是关于对具有负值和正值的整数和浮点数列表进行排序?的主要内容,如果未能解决你的问题,请参考以下文章