根据最接近数字 Python 的实例对对象列表进行排序



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

因此,假设列表有一个对象,该对象具有一个名为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以及如何根据对象的属性对对象列表进行排序?

正是你描述它的方式。

key=lambda x: abs(x._norm - number)

好吧,简单地将它们组合起来:

>>> 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]

最新更新