【发布时间】:2017-06-20 12:22:30
【问题描述】:
我有一个元组列表(x, ind),其中x 是项目,ind 是结果列表中的目标索引。列表是随机顺序的,但可以假设如果列表中有N 项,则元组中ind 的值将在[0,N) 中不重复(即所有有效索引将完全存在一次)。如何获取每个元组的位置为ind 的列表?
请不要与如何按键排序的许多现有答案混淆。
显然,按ind 键进行排序很容易,但由于上述关于ind 值的假设,O(n) 操作会产生不必要的额外O(n*logn) 成本。
所以:
l = [('item1',1), ('item0',0), ('item2',2), ('item4',4), ('item3',3)]
l2 = magic_rearrange(l, key=lambda x: x[1])
print(l2)
应该给:
[('item0',0), ('item1',1), ('item2',2), ('item3',3), ('item4',4)]
【问题讨论】:
-
仍在排序,但没有
sorted函数。
标签: python algorithm list data-structures