在python中按另一个list.index对压缩列表进行排序

时间:2019-03-03 09:13:53

标签: python

如何从另一个列表中对带有列表索引的zip列表进行排序? 目前,我使用两个循环,效率不高。

0FWEB8,030119,075257,671442647590,184,21,24229,9777A611236814D8,04,PT,TestB82PTResponseTags,00,0FWEB8,24

4 个答案:

答案 0 :(得分:3)

使用python字典:

d = dict(zip(L2,L3))
L4 = [d[key] for key in L1]

答案 1 :(得分:3)

要按另一个列表的index对压缩列表进行排序,可以使用函数sorted()

l1 = ['eins', 'zwei', 'drei', 'vier']
l2 = ['zwei', 'eins', 'vier', 'drei']
l3 = ['apfel', 'birne', 'banane', 'kirsche']

l = sorted(zip(l2, l3), key=lambda x: l1.index(x[0]))
# [('eins', 'birne'), ('zwei', 'apfel'), ('drei', 'kirsche'), ('vier', 'banane')]

[i for _, i in l]
# ['birne', 'apfel', 'kirsche', 'banane']

答案 2 :(得分:3)

按照您的原始逻辑,我想您可以进行一些更改以使其起作用:

YYYY-MM-DD hh:mm:ss

可以写成一个衬里:

L4 = []

for e in L1:
  i2 = L2.index(e) # looks for the index (i2) of the element e of L1 in L2
  L4.append(L3[i2]) # append lo L4 the element at index i2 in L3

print(L4)
#=> ['birne', 'apfel', 'kirsche', 'banane']

答案 3 :(得分:2)

我喜欢@syltruong的答案,但是->to('username')是另一个选择:

enumerate