需求描述
現在有兩個list對象,b
是a
的子集:
a = ['市轄區', '文峯區', '北關區', '殷都區', '龍安區', '安陽縣', '湯陰縣', '內黃縣', '林州市', '高新區']
b = ['內黃縣', '北關區', '安陽縣', '文峯區', '林州市', '殷都區', '湯陰縣', '高新區', '龍安區']
想要讓b
依照a
中的順序進行重新排序
實現方法
分步實現
# 先生成b中每個元素在a中位置的序列
c = [a.index(x) for x in b]
# [7, 2, 5, 1, 8, 3, 6, 9, 4]
# 使用zip()將位置序列與原序列打包成元組對象後,再使用sorted() 函數對所有可迭代的對象進行排序操作得到序列
b = [x for _,x in sorted(zip(c,b))]
# ['文峯區', '北關區', '殷都區', '龍安區', '安陽縣', '湯陰縣', '內黃縣', '林州市', '高新區']
一行實現
b = [x for _,x in sorted(zip([a.index(x) for x in b],b))]