需求描述
现在有两个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))]