排序同时保留python中的顺序

The*_*dor 5 python sorting

按价值对浮动列表进行排序的最佳方法是什么,同时仍保留初始订单的记录.

即排序:

a=[2.3, 1.23, 3.4, 0.4]
Run Code Online (Sandbox Code Playgroud)

返回类似的东西

a_sorted = [0.4, 1.23, 2.3, 3.4]
a_order = [4, 2, 1, 3]
Run Code Online (Sandbox Code Playgroud)

如果你抓住我的漂移.

Sil*_*ost 16

你可以这样做:

>>> sorted(enumerate(a), key=lambda x: x[1])
[(3, 0.4), (1, 1.23), (0, 2.3), (2, 3.4)]
Run Code Online (Sandbox Code Playgroud)

如果需要索引以1而不是0开头,则enumerate接受第二个参数.

  • itemgetter会比lambda好 (2认同)

Dan*_*ach 5

  • 使用enumerate生成的序列号.
  • sorted与a key一起使用以按浮动排序
  • 用于zip从值中分离出订单

例如:

a_order, a_sorted = zip(*sorted(enumerate(a), key=lambda item: item[1]))
Run Code Online (Sandbox Code Playgroud)