【发布时间】:2015-05-28 10:44:00
【问题描述】:
所以有一个列表说b = [b1, b2, b3] 我希望能够对列表a 进行排序,这样a 中也存在的所有bi 具有与@987654325 中相同的相对顺序@ - 不理会a 的其余元素。所以
a = [ b1, x, b3, y, b2] -> [ b1, x, b2, y, b3]
a = [ b1, x, b2, y, b3] -> no change
a = [ b1, x, y, b2] -> no change
a = [ b3, x, b1, y, b2] -> [ b1, x, b2, y, b3]
b 当然可以是元组或任何其他有序结构。我想出了什么
bslots = dict((x, a.index(x)) for x in a if x in b)
bslotsSorted = sorted(bslots.keys(), key=lambda y: b.index(y))
indexes = sorted(bslots.values())
for x,y in zip(bslotsSorted, indexes):
a[y] = x
笨拙且 O(n^2)
【问题讨论】:
标签: python algorithm list python-2.7 sorting