0

我有一个对象列表,我想对其进行排序,但有一个警告。

所以让我们说列表有一个对象,它有一个名为 norm 的实例

and norms are like [0.1,0.2,0.3.....0.9]

所以如果我做类似的事情:

 potential_list.sort(key = lambda x:x._norm, reverse = True)

然后它会以类似的方式对其进行排序

       [0.9, 0.8... 0.1]

但我想把它排序成一个数字,这样

     number = 0.3

  then sorted list is [0.4,0.6,0.3,0.7 and so on] because

       0.4-0.3 = 0.1
       abs|0.4-0.5| = 0.1
       0.4 - 0.2 = 0.2
        abs|0.4 - 0.6| = 0.2

  So the sort is because of that difference.

我该怎么做呢。并不是说这些 [0.4,0.6....] 是任何对象的实例

因此,它混合了根据列表 python 中最接近的数字对列表进行排序 以及如何根据对象的属性对对象列表进行排序?

4

2 回答 2

2

和你描述的一样。

key=lambda x: abs(x._norm - number)
于 2012-04-23T22:13:39.620 回答
1

好吧,只需将它们组合起来:

>>> class X(object):
...     def __init__(self, n): self._norm = n
...     def __repr__(self): return str(self._norm)
... 
>>> lst = [X(0.1),X(0.2), X(0.3), X(0.4), X(0.5), X(0.6), X(0.7), X(0.8), X(0.9)]
>>> lst.sort(key=lambda x: abs(x._norm - 0.5))
>>> lst
[0.5, 0.4, 0.6, 0.7, 0.3, 0.2, 0.8, 0.1, 0.9]
于 2012-04-23T22:13:49.853 回答